Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Добавление в options (https://javascript.ru/forum/jquery/51436-dobavlenie-v-options.html)

tramX 06.11.2014 16:08

Добавление в options
 
Здравствуйте. Получил с помощью ajax данные, поместил их в <select class="form-control" id="select_device_list"></select> $("#select_device_list").append( $(add_element)) в браузере список отображается, но вот если нужно получить значение выбранного пункта, var device_default = $("select#select_device_list").val(); то jquery возвращает null. Как поремонтировать?

рони 06.11.2014 20:10

tramX,
:no:
<!doctype html>

<html lang="en">

<head>

  <meta charset="utf-8">

  <title>append demo</title>
  <script src="http://code.jquery.com/jquery-1.10.2.js"></script>
</head>

<body>
<select id="select_device_list" name="" size="1"></select>
<script>
$( "#select_device_list" ).append( "<option value='f'>f</option><option value='a'>a</option>" );
alert($( "#select_device_list" ).val());
</script>
</body>
</html>

tramX 06.11.2014 22:13

Я это и делаю, только в цикле.

for (var i in data) {  //Наполняем список элементами.
         add_element = "<option value="+i+">"+data[i]+"</option>";
         $("#select_device_list").append(add_element);
                }


В браузере отображаются значения в списке. Но если нажать просмотр кода страницы то select оказывается пустой. И если я хочу подключить обработчик к этому select, то не получаю значения из select а поучаю null

рони 06.11.2014 22:21

tramX,
:-?
<!doctype html>

<html lang="en">

<head>

  <meta charset="utf-8">

  <title>append demo</title>
  <script src="http://code.jquery.com/jquery-1.10.2.js"></script>
</head>

<body>
<select id="select_device_list" name="" size="1"></select>
<script>
var data = [1,2,3], add_element;
for (var i in data) {  //Наполняем список элементами.
         add_element = "<option value="+i+">"+data[i]+"</option>";
         $("#select_device_list").append(add_element);
                }

//$( "#select_device_list" ).append( "<option value='f'>f</option><option value='a'>a</option>" );
alert([$( "#select_device_list" ).val(),$( "body" ).html()]);
</script>
</body>
</html>

tramX 06.11.2014 22:55

alert([$( "#select_device_list" ).val(),$( "body" ).html()]);
html код выводится а список все равно пустой.

рони 06.11.2014 23:18

tramX,
пишите код делайте макет
Пожалуйста, отформатируйте свой код!

Для этого его можно заключить в специальные теги: js/css/html и т.п., например:
[js]
... ваш код...
[/js]


О том, как вставить в сообщение исполняемый javascript и html-код, а также о дополнительных возможностях форматирования - читайте http://javascript.ru/formatting.

tramX 06.11.2014 23:36

Есть форма https://bitbucket.org/tramX/pythonix...tml?at=default

Есть jquery https://bitbucket.org/tramX/pythonix....js?at=default который обрабатывает эту форму. Все вроде работает. Но #select_device_list наполняется динамически, и не хранит значения в коде.

рони 07.11.2014 00:34

tramX,
медитируйте на тему асинхронность
var device_default;
        var physical_network_default = $("select#physical_network").val();
        var url_request = "/adminz_get_devices/"+physical_network_default+"/";
        $.get(url_request, function(data) { //Выполняем запрос на получение списка устройств.
                //$('option', "#select_device_list").remove(); //Удаляем элементы из списка
                for (var i in data) {  //Наполняем список элементами.
                  var  add_element = "<option value="+i+">"+data[i]+"</option>";

                    
                    $("#select_device_list").append(add_element);
                };
$('#device_list').show(500);
                 device_default = $("select#select_device_list").val();// сюда же вызов для заполнения другого селекта $.get ...
            });

заполнили селект -- потом получили данные -- а ненаоборот

строка 24 сработает раньше чем придёт ответ с сервера в строку 10

tramX 07.11.2014 15:20

Решил вопрос иначе.
https://bitbucket.org/tramX/pythonix....js?at=default
Спасибо что помогали.

рони 07.11.2014 16:15

tramX,
ок!


Часовой пояс GMT +3, время: 09:11.