Проблемы с получением .selectedIndex для работы с полями выбора в JQuery Mobile Framework - PullRequest
0 голосов
/ 17 марта 2012

У меня есть набор настроек отдельных выпадающих списков, содержимое которых динамически обновляется в зависимости от предыдущего выбора.Он работает нормально, выбирая последовательно.

Когда я пытаюсь вернуться к началу и начать заново, хотя я пытался сбросить все дочерние элементы, используя

my_select.selectedIndex = 0;

Дочерние поля выбора остаютсябез изменений.Я думал, что это ошибка Javascript, но обнаружил, что пример JSFiddle действительно работает, но мой код в JQuery mobile не работает - из-за этого я поверил, что это проблема, связанная с JQuery Mobile

Вы можете увидеть пример JSFiddleв http://jsfiddle.net/vinomarky/xfcdF/

Шаги для репликации:

  1. Выберите «Оболочка» из Типа
  2. Выберите 5 из OD
  3. Измените тип на Трубопровод

Пример JSFiddle ведет себя как следует - сбрасывает дочерние элементы на «-», в то время как мой «живой» пример JQuery Mobile не

Есть идеи относительно того, почему?

1 Ответ

4 голосов
/ 17 марта 2012

Вы управляете DOM за спиной jQuery Mobile, но никогда не сообщаете jQuery Mobile, что что-то изменилось.

Вам необходимо вызвать метод refresh после изменения базового <select>:

обновить обновить пользовательский выбор

Используется для обновления пользовательского выбора, чтобы отразить значение собственного элемента выбора. Если число параметровв элементе выбора, отличном от количества элементов в пользовательском меню, оно перестроит пользовательское меню.

Так что вам нужно добавить такие вещи:

$('#od').selectmenu('refresh');

внизу ваших обработчиков изменений.Элемент для обновления, конечно, зависит от того, в каком обработчике изменений вы находитесь.

Демонстрация: http://jsfiddle.net/ambiguous/n3VXe/

Ваша скрипка работала нормально, потому что она вообще не использовала jQuery Mobile.

Кроме того, вы не должны использовать атрибуты onchange в 2012 году, вы загружаете jQuery, поэтому вы должны использовать его для привязки обработчиков к интересующим вас событиям. Возможно, вы захотите заменить всеваши прямые DOM-манипуляции с JQuery.

...