Следует отметить, что это легче сделать с помощью $ ("# target") [0] .selectedIndex = 0;
Дэвид Андрес
17
Это работает, но оно основано на значении 1-го элемента , если 1-й элемент содержит пустое значение, он выберет ближайший элемент со значением WITH
evilReiko
2
Вроде отлично работает, кроме IE6. Неуверенный в 7-8, работает на 9.
Никол
3
Я отрекаюсь от своего предыдущего заявления, забегал вперед. $ ( "# целевой") Вал ( "вариант: первый"). работает почти везде, но IE6 $ ("target"). val ($ ("# target option: first"). val ()); будет работать в IE6, потому что вы буквально ищите первое значение и вводите его как значение цели. Два поиска по идентификатору вместо одного.
Николи
2
И это на самом деле необходимо для IE6, 7 и 8. Принимая во внимание, что .val ('option: first') работает в IE9 (и в Safari, и в Firefox, и в Chrome, и в Opera).
Это не работает должным образом во всех случаях. У меня есть родительский / дочерний каскадный выпадающий список. Выберите родителя № 1, отобразите дочернего № 1, выберите родителя № 2, отобразите дочернего № 2. Каждый раз, когда они выбирают нового родителя, он должен установить соответствующий дочерний элемент обратно в первую опцию. Это решение не делает этого. Он оставляет детское меню «липким». См. Вариант: selected.prop ('selected', false) / option: first.prop ('selected', 'selected') по этому вопросу для ответа, который работает в других сценариях.
Лэнс Кливленд
это не вызывает событие onChange. По крайней мере, в хроме.
Томаш Муларчик
Спасибо! Это первый ответ в списке ответов, который работал для меня.
@Romesh, как я могу установить selectedIndex базу на значение?
Младшая Лягушка
111
// remove "selected" from any options that might already be selected
$('#target option[selected="selected"]').each(function(){
$(this).removeAttr('selected');});// mark the first option as selected
$("#target option:first").attr('selected','selected');
Хороший второй подход. Пожалуйста, добавьте значение выбранного атрибута. Например, attr («выбранный», «выбранный»). Без этого дополнительного параметра выбор не будет сделан.
Дэвид Андрес
@EgorPavlikhin - я только что отредактировал ответ, включив код JQuery, чтобы убрать флаг «selected» из любых опций, которые, возможно, уже были выбраны. Теперь ответ правильный :)
jmort253
20
Нет необходимости в eachфункции, должно быть: $('#target option[selected="selected"]').removeAttr('selected')также теперь следует использовать с removePropи propвместо.
vsync
Более полная версия ответа Джеймса Ли Бейкера в другом месте на этот вопрос, хотя добавляет вычислительные циклы, которые могут не потребоваться, если интерфейс хорошо управляется.
Вам также необходимо отменить выбор любых ранее выбранных элементов, чтобы это работало в большинстве случаев. Смотрите ответ от Джеймса Ли Бейкера для деталей.
Лэнс Кливленд
44
Изменение значения выбранного входа или настройка выбранного атрибута может перезаписать свойство selectedOptions по умолчанию элемента DOM, в результате чего может произойти сбой элемента в форме, в которой было вызвано событие сброса.
Используйте метод prop jQuery, чтобы очистить и установить необходимую опцию:
Отлично. У меня есть каскадные выпадающие меню. Когда пользователь выбирает родительский вариант 2, то дочерний вариант 3, я не хочу, чтобы это «прилипало». Другими словами, пользователь затем выбирает родителя № 1, а затем повторно выбирает родителя № 2. Когда это происходит, я хочу, чтобы дочернее меню перезапустилось до первой опции (в моем случае это «Любой»). Все остальные решения здесь терпят неудачу на Firefox v19 и Chrome на Linux.
Это не будет работать в тех случаях, когда раскрывающийся список содержит предварительно выбранный элемент. Смотрите мои комментарии на выбранный ответ для деталей.
Лэнс Кливленд
21
Один тонкий момент, который, как мне кажется, я обнаружил в отношении ответов с наибольшим количеством голосов, заключается в том, что, даже если они правильно изменяют выбранное значение, они не обновляют элемент, который видит пользователь (только при щелчке на виджете они увидят флажок рядом с обновленный элемент).
Цепочка вызова .change () до конца также обновит виджет пользовательского интерфейса.
Хорошие замечания по поводу отключенных опций. Приятное дополнение к представленным ответам!
Лэнс Кливленд
16
Другой способ сброса значений (для нескольких выбранных элементов) может быть следующим:
$("selector").each(function(){/*Perform any check and validation if needed for each item *//*Use "this" to handle the element in javascript or "$(this)" to handle the element with jquery */this.selectedIndex=0;});
+1 на самом деле это хороший ответ, но вы могли бы сделать его более конкретным для предметной области; вместо того, чтобы $("selector")вы могли просто написать$('#target')
Это работает, только если нет уже выбранных опций. Смотрите ответ Джеймса Ли Бейкера.
Вебар
6
Я обнаружил, что просто установка attr selected не работает, если уже есть выбранный атрибут. Код, который я использую сейчас, сначала сбрасывает выбранный атрибут, затем выбирает первый вариант.
Это хорошо работает и очень похоже на ответ Джеймса Ли Бейкера, отмеченный в другом месте по этому вопросу. Мне нравится другой ответ с параметром option: selected и option: first при выполнении option: first, вероятно, будет быстрее (по вычислениям), чем find ().
Это хорошо работает и очень похоже на ответ Джеймса Ли Бейкера, отмеченный в другом месте по этому вопросу. Мне нравится другой ответ с параметром option: selected и option: first при выполнении option: first, вероятно, будет быстрее (по вычислениям), чем find ().
Лэнс Кливленд
2
У меня сработало только использование триггера («изменение») в конце, например:
На обратной стороне ответа Джеймса Ли Бейкера я предпочитаю это решение, поскольку оно устраняет зависимость от поддержки браузера: first: selected ...
Для меня это сработало только тогда, когда я добавил следующий код:
.change();
Для меня это сработало только тогда, когда я добавил следующий код: так как я хотел «сбросить» форму, то есть выбрать все первые параметры из всех вариантов выбора формы, я использовал следующий код:
Как насчет позиции 15, 25 или с конкретным текстом? : D
Марсело Агимовель
Вызов .val()просто получает значение первой опции в списке. На самом деле он не выбирает (делает выбранным) первый вариант, как было задано в исходном вопросе.
Funka
1
Для меня это работало только тогда, когда я добавил следующую строку кода
Вы можете попробовать это
источник
$("#target").prop("selectedIndex", 0).change();
источник
each
функции, должно быть:$('#target option[selected="selected"]').removeAttr('selected')
также теперь следует использовать сremoveProp
иprop
вместо.Когда вы используете
это не будет работать в Chrome и Safari, если первое значение параметра равно нулю.
я предпочитаю
потому что он может работать во всех браузерах.
источник
Изменение значения выбранного входа или настройка выбранного атрибута может перезаписать свойство selectedOptions по умолчанию элемента DOM, в результате чего может произойти сбой элемента в форме, в которой было вызвано событие сброса.
Используйте метод prop jQuery, чтобы очистить и установить необходимую опцию:
источник
источник
Один тонкий момент, который, как мне кажется, я обнаружил в отношении ответов с наибольшим количеством голосов, заключается в том, что, даже если они правильно изменяют выбранное значение, они не обновляют элемент, который видит пользователь (только при щелчке на виджете они увидят флажок рядом с обновленный элемент).
Цепочка вызова .change () до конца также обновит виджет пользовательского интерфейса.
(Обратите внимание, что я заметил это при использовании jQuery Mobile и окна на рабочем столе Chrome, так что это может быть не везде).
источник
Если у вас отключены параметры, вы можете добавить not ([отключено]), чтобы не выбирать их, что приводит к следующему:
источник
Другой способ сброса значений (для нескольких выбранных элементов) может быть следующим:
источник
$("selector")
вы могли просто написать$('#target')
Просто так:
источник
источник
Я обнаружил, что просто установка attr selected не работает, если уже есть выбранный атрибут. Код, который я использую сейчас, сначала сбрасывает выбранный атрибут, затем выбирает первый вариант.
источник
Хотя каждая функция, вероятно, не нужна ...
работает для меня.
источник
Вот как я бы это сделал:
источник
У меня сработало только использование триггера («изменение») в конце, например:
источник
Если вы собираетесь использовать первый вариант по умолчанию, как
тогда вы можете просто использовать:
Это красиво и просто.
источник
Это сработало для меня!
источник
На обратной стороне ответа Джеймса Ли Бейкера я предпочитаю это решение, поскольку оно устраняет зависимость от поддержки браузера: first: selected ...
источник
Для меня это сработало только тогда, когда я добавил следующий код:
.change();
Для меня это сработало только тогда, когда я добавил следующий код: так как я хотел «сбросить» форму, то есть выбрать все первые параметры из всех вариантов выбора формы, я использовал следующий код:
$('form').find('select').each(function(){ $(this).val($("select option:first").val()); $(this).change(); });
источник
Использование:
Пожалуйста, найдите простую работу в этом JSFiddle .
источник
.val()
просто получает значение первой опции в списке. На самом деле он не выбирает (делает выбранным) первый вариант, как было задано в исходном вопросе.Для меня это работало только тогда, когда я добавил следующую строку кода
источник
нормально работал в хроме
источник
Если вы храните объект jQuery элемента select:
источник
Проверьте этот лучший подход, используя jQuery с ECMAScript 6 :
источник
Вы можете выбрать любой вариант
dropdown
, используя его.источник
$('select#id').val($('#id option')[index].value)
Замените идентификатор конкретным идентификатором тега, а индекс - конкретным элементом, который вы хотите выбрать.
т.е.
Итак, здесь для выбора первого элемента я буду использовать следующий код:
источник
Использование:
источник