Страницы

Поиск по вопросам

воскресенье, 26 января 2020 г.

Выбор элемента select при помощи jQuery

#jquery #html #css


У меня такая проблема:
Есть Select:
 

И я прописал js код в консоль:
$("#make [value='Mazda']").attr("selected", "selected");

Возвращет нужный элемент option, selected="selected", но я смотрю на список, а выбран
все равно первый option(value=0).
$("#make [value='Mazda']").attr("selected", "");

Тот же результат, помогите пожалуйста, как сделать так, чтобы визуально был выбран
элемент с value='Mazda', естественно он должен быть выбран и по настоящему.    


Ответы

Ответ 1



Рискну предположить, что это некая особенность реализации JS в Chrome. Ваш код вполне успешно выполняется под IE (10-ая версия) и Firefox (23-я). А вот в Chrome (28-я) происходят описанные вами проблемы. В Opera не проверял. Так или иначе, с помощью вот такого чудо-костыля: var val = text = 'Mazda'; $("select option[value=" + val + "]").attr('selected', 'true').text(text); добытого мною исключительно методом тыка, это можно обойти. Не могу сказать, за счет чего это работает (люди, лучше знакомые с JS, думаю, смогут это как-то объяснить). Вероятно, это действительно адов костыль, тем не менее, может сойти за временное решение

Ответ 2



В текущих версиях jQuery для смены option в select и выбора checkbox надо использовать метод .prop() $('select option[value="Mazda"]).prop('selected', true); Данный метод изменяет свойство javascript объекта соответсвующего option и не добавляет атрибуты, то есть в разметке ничего не изменится. Хотя добавление атрибута пока, что работает с option (проверил в Opera), но не работает с checkbox.

Ответ 3



Попробуйте $('#make').val('Mazda')

Ответ 4



Для изменения таеих вещей как selected и checked, надо использовать prop, а не attr.

Ответ 5



$("#make").val("Mazda").change()

Ответ 6



Туго понял вопрос но возможно $("#make option[value='Mazda']").val('Mazda').attr("selected", true);

Ответ 7



Лично я предпочитаю следующий метод однострочник: $("select").val("").trigger("chosen:updated") Во всех браузерах должно работать. Соответственно вместо пустой строки нужно использовать текст первого option'а, но как правило дефолтный option должен быть пустым, а не содержать 0 и т.п. Соответственно подставляя значение любого option'а его можно выбрать.

Ответ 8



Нужно применять атрибут selected к элементу option: $("#make>option[value='Mazda']").attr("selected", "selected");

Ответ 9



$("#make").val("Mazda"); Это все.

Комментариев нет:

Отправить комментарий