2014-12-04 2 views
0

Я использую jQuery. У меня есть тег select на моей странице.Невозможно установить опцию выбора с помощью javascript при загрузке страницы

<select id="sel"> 
    <option value="1">One</option> 
    <option value="2">Two</option> 
</select> 

Я получаю некоторое значение с моего сервера с помощью ajax при загрузке страницы.

$().ready(function() { 
    $.post(url, function(result) { 
    var value = result.value; // for example, result can be {value: "1"}. 
    console.log($("#sel")[0].options.length); // output: 0 // EMPTY options ?? 
    $("#sel").val(value); 
    }); 
}); 

Но мой выбранный вариант не изменяется. В теге select нет параметров. Не должен ли DOM быть полностью загружен в этом контексте?

Я могу установить выбранную опцию, когда страница загружена, и пользователь выполнил некоторые действия.

+0

Где определяется 'value'? Я не вижу этого в вашем коде. – scunliffe

+0

@scunliffe: Это не имеет значения. Дело в том, что в этом контексте тег select, похоже, вообще не содержит параметров. –

+0

@ Катла: Это не имеет значения. Это не сработает, даже если я установил 'значение' в строку напрямую. –

ответ

0

Попробуйте эту вариацию, это должно работать так, как вы, возможно, хотели этого.

Im Предполагая, что resultValue является индексом опции выбора.

$().ready(function() { 
    $.post(url, function(result) { 
    var resultValue = result.value; // for example, result can be {value: "1"}. 
    var select = $('#sel'); 
    var opts = $(select[0].options).toArray(); 
    console.log(opts); // output will be the number of child nodes within the Select 

    // Setting the new value of the select, based on the result.value 
    select.val(opts[resultValue].value); 
    }); 
}); 
0

попробовать это

$.post(url, function(result) { 
    var value = result.value; 

    $("#sel option[value="+value+"]").attr("selected", true); 
    }); 
Смежные вопросы