установить выбранное значение из выпадающего списка

0

У меня есть 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]))
    }
});

но не получая значение как выбранное

Теги:

5 ответов

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()
    }
});
  • 0
    я пробовал с помощью кода code.правильно перенаправляя с другой страницы со значением http://localhost:9080/history.html?testid=25 значение не получается как скрытый
  • 0
    @Sush вы можете добавить предупреждение перед if(testId){ и посмотреть, каково значение testId
Показать ещё 8 комментариев
0

используйте этот код, я его протестировал

var val = $(".lngcombo").val(); alert(val);

0

Вы должны вызвать эту функцию при выполнении вызова ajax, здесь случай отличается, сначала вызовы js-функции и html отображаются позже. Поэтому важно понять, что сначала нужно отобразить html, а затем вызвать нашу js-функцию. Это будет работать для вас.

alert($("#testnames").val(testid[1]).val());
  • 0
    Теперь оповещение покажет требуемое значение.
0

Попробуйте эти скрипты.

JS

$(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, " "));
}
0

Вам здесь не нужен сигнал, просто используйте:

$("#testnames").val(testid[1]);

Демо-версия скрипта

  • 0
    я использовал там ... но не получаю ...
  • 0
    Проверьте мою скрипку, если нет, то, возможно, что-то не так с вашим значением window.location.href или вашим сгенерированным HTML здесь.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню