У меня есть dropdown list
со значениями
function getTests() {
var html = '';
$.get('/getTests', function (tests) {
selTest = tests;
html +=' <option value="">SELECT</option>';
tests.forEach(function (test) {
html += '<option value="' + test.id + '">' + test.names + '</option>';
});
$('#testnames').html(html);
});
}
html-код: -
<select class="lngcombo" id="testnames">
<option value="">SELECT</option>
<option value="25">email confirmation</option>
<option value="72">ttutu</option>
<option value="44">pagination</option>
</select>
в то время как на другой странице я получаю значение test.id
следующим образом и хочу получить значение, выбранное в раскрывающемся test.id
http://localhost:9080/history.html?testid=25
выбранное в качестве раскрывающегося списка email confirmation
по email confirmation
на основе testid=25
Для этого я делаю следующее:
$(document).ready(function () {
if (window.location.href.indexOf('testid') > -1){
var testid = window.location.href;
testid =testid.split('=');
alert($("#testnames").val(testid[1]))
}
});
но не получая значение как выбранное
Поскольку вы загружаете содержимое с помощью запроса ajax, вам нужно установить значение после завершения запроса ajax и создания параметров.
Таким образом, шаблон решения может выглядеть так:
function getTests(testId) {
var html = '';
$.get('/getTests', function (tests) {
selTest = tests;
html += ' <option value="">SELECT</option>';
tests.forEach(function (test) {
html += '<option value="' + test.id + '">' + test.names + '</option>';
});
$('#testnames').html(html);
if(testId){
$("#testnames").val(testId)
}
});
}
$(document).ready(function () {
if (window.location.href.indexOf('testid') > -1) {
var testid = window.location.href;
testid = testid.split('=');
getTests(testid[1])
}else{
getTests()
}
});
используйте этот код, я его протестировал
var val = $(".lngcombo").val(); alert(val);
Вы должны вызвать эту функцию при выполнении вызова ajax, здесь случай отличается, сначала вызовы js-функции и html отображаются позже. Поэтому важно понять, что сначала нужно отобразить html, а затем вызвать нашу js-функцию. Это будет работать для вас.
alert($("#testnames").val(testid[1]).val());
Попробуйте эти скрипты.
$(document).ready(function () {
if (window.location.href.indexOf('testid') > -1){
var testid = getParameterByName('testid');
$('#testnames').val(testid);
}
});
function getParameterByName(name) {
name = name.replace(/[\[]/, "\\[").replace(/[\]]/, "\\]");
var regex = new RegExp("[\\?&]" + name + "=([^&#]*)"),
results = regex.exec(location.search);
return results == null ? "" : decodeURIComponent(results[1].replace(/\+/g, " "));
}
window.location.href
или вашим сгенерированным HTML здесь.
http://localhost:9080/history.html?testid=25
значение не получается как скрытыйif(testId){
и посмотреть, каково значениеtestId