Jump to content
  • 0

Не получается получить значение опции динамически заполняемого списка select


Sserg-135
 Share

Question

Бьюсь несколько дней не могу понять:

Есть скрипт на JS которым наполняю список <select> при загрузке страницы

document.getElementById(Id).options[num_option]=new Option(result[i]['Model'],result[i]['code_model'],false,false);

где result  это массив который заполняется из Mysql  с помощью AJAX

Далее через Jquery выбираю опцию которую делаю выбранной:

$("#"+Id+" :contains("+model+")").attr("selected", "selected");$("#"+Id+" :contains("+model+")").prop("selected", true);

Где model это переменная с текстовым значением  выбранной опции ( Хотя это не принципиально т.к. при выборе установки по значению value все то-же самое о чем пойдет речь ниже).

Так вот суть трабла:  мне нужно узнать  значение выбранной опции списка и передать его  в функцию которая исполняется после установки данного селекта:

 

document.getElementById('Id').value  –  мне всегда возвращает значение первой опции как и $('#Id’ option:selected').val(), хотя сам список благополучно заполняется и стоит на правильно выбранной опции.

Причем если я перед этим напишу alert(‘xxx’), т.е.  alert(‘xxx’);  document.getElementById('Id').value  то получаю правильное значение выбранной опции. Такое впечатление что нет готовности установки селекта.

Хотя если подобный список сформировать например силами PHP т.е. не динамически то все опции определяются правильно.

Для чего мне это нужно – чтобы установить  взаимосвязанные списки на значение полученное из переменной URL.

Я конечно могу передать в ту функцию значение непосредственно из URL,  НО: 1) хочется разобраться что за хрень : ))) и 2)  для установки цепочки взаимосвязанных селектов и событий, красивее и удобнее в программировании использовать обращение через значения самих селектов.

Кстати попытки дождаться готовности событий типа

$(document).ready(function () {document.getElementById('Id').valueИ здесь  считывать значения селектов});$(windows).load(function () {document.getElementById('Id').valueИ здесь  считывать значения селектов});

Приводят к тому-же результату- т.е  селект как-бы «все еще на первой опции»

 

Вот собственно )

Что я делаю неправильно? Помогите пожалуйста

 

 

Link to comment
Share on other sites

6 answers to this question

Recommended Posts

  • 0

Так вот суть трабла: мне нужно узнать значение выбранной опции списка и передать его в функцию которая исполняется после установки данного селекта:

http://jsfiddle.net/drmcragf

А по поводу готовности документа.. Если данные поступают динамически, то лучше вместо ready или load - использовать on.

Вот вариант с тем же добавлением динамически..

http://jsfiddle.net/drmcragf/1/

 

Или вот.. выбрали вы заранее какой то элемент. Элемент выбрать можно разными способами (Допустим с тем же :contains + при совпадении получаем индекс этого элемента). Далее просто инициализируем change функцию при готовности документа..

 

http://jsfiddle.net/drmcragf/2/

 

Если я не правильно понял суть задачи, то прошу уточнить.

Edited by Q4Dizzy
Link to comment
Share on other sites

  • 0

суть в том, что у меня не получается определить значение (опцию) динамически наполняемого селекта к моменту  (или во время)  загрузки страницы. Т.е. скрипты, которые исполняются во время загрузки страницы не могут еще получить состояние селекта ( т.е. он для них еще стоит на нулевой опции). Но визуально , когда страница уже отображается браузером, то я вижу что селект стоит на выбранной ("правильной" ) опции. Получается что когда происходит событие готовности документа, то селект просто существует, но не установлен на нужную опцию. Хотя функция которая заполняет селект и  устанавливает его на нужную опцию  по идее уже отработала ( я ее вызываю перед тем как считывать состояние селекта)

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

  • Similar Content

    • By Marina_dolya
      Добрый день. 
      Помогите решить проблемку. В chrom и Opera
      <select>
      <option>100g</option>
      </select>
      у g обрезаeтся хвостик. 
       
    • By Wile E
      Здравствуйте, дорогие форумчане. Я - новичок самоучка, поэтому для вас проблема может быть не очень сложная.
      Мне нужно сделать выпадающий список, как на рисунке. Интересует меня то, как сделать такие оглавления, как на изображении ("по сторам", "по товару"), чтоб они не выпадали вместе с option. 
      Простите, если не совсем понятно и корректно выражаюсь!

    • By ivanm
      <select> <option disabled>Имя  Фамилия  №телефона</option> <option>Андрей Мартыненко 123456789</option> <option>Кирил Богун 123321456</option> <option>Игорь Лях  258852123</option> </select> выводит:
      Имя  Фамилия  №телефона
      Андрей Мартыненко 123456789
      Кирил Богун 123321456
      Игорь Лях  258852123
      а нужно с выравниванием каждой колонки:
      Имя       Фамилия        №телефона
      Андрей  Мартыненко  123456789
      Кирил    Богун              123321456
      Игорь    Лях                  258852123
      пока спасаюсь анализом длины в php скрипте и добавлением &nbsp; тоесть своей функцией выравнивания,
      но может есть более простой метод, HTML5 свойство, или CSS
    • By kattiperk
      Здравствуйте.
      Подскажите хороший плагин кастомного селекта и таким же кастомным скроллом. Желательно 2 в 1. Ну или посоветуйте, как объединить.
    • By temnoo
      Добрый день, помогите добиться следующего:
      Есть часть из кода:
            <tr>         <td style="font-weight: bold; font-family: Arial; background-color: rgb(182, 225, 252); width: 30%;"  class="calcul_num">  <select id="Sborka" name="sborka" onchange="getCost(this.form)"> <option value="1">Нет</option> <option value="2">Да</option>  </select> </td>       </tr>         <tr>         <td style="font-weight: bold; font-family: Arial; background-color: rgb(182, 225, 252); width: 30%;"  class="calcul_num">  <select id="Fundament" name="fundament" onchange="getCost(this.form)"> <option value="1">Нет</option> <option value="2">Грунтозацепы</option> <option value="3">Брус</option>  </select> </td>       </tr> Хотелось бы что бы при выборе "нет" в первом меню
      ниже предлагалось бы
      <option value="1">Нет</option> <option value="2">Грунтозацепы</option> в при выборе "да"
      <option value="1">Нет</option> <option value="3">Брус</option> Спасибо.
       
      От @klierik: клади, пожалуйста, код в теги. Иначе тема может не пройти модерирование
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy