Как сделать первый вариант <select> выбранным с помощью jQuery

StackOverflow https://stackoverflow.com/questions/1414276

  •  06-07-2019
  •  | 
  •  

Вопрос

Как мне сделать первый вариант выбранным с помощью jQuery?

<select id="target">
  <option value="1">...</option>
  <option value="2">...</option>
</select>
Это было полезно?

Решение

$("#target").val($("#target option:first").val());

Другие советы

Вы можете попробовать это

$("#target").prop("selectedIndex", 0);
// 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');

Когда вы используете

$("#target").val($("#target option:first").val());

это не будет работать в Chrome и Safari, если первое значение параметра равно нулю.

Я предпочитаю

$("#target option:first").attr('selected','selected');

потому что он может работать во всех браузерах.

Изменение значения выбранного входа или настройка выбранного атрибута может перезаписать свойство selectedOptions по умолчанию элемента DOM, в результате чего может произойти сбой элемента в форме, в которой было вызвано событие сброса.

Используйте метод prop jQuery, чтобы очистить и установить необходимую опцию:

$("#target option:selected").prop("selected", false);
$("#target option:first").prop("selected", "selected");
$("#target")[0].selectedIndex = 0;

Одна тонкость, которую я считаю обнаруженной мной в отношении ответов с наибольшим количеством голосов, заключается в том, что, даже если они правильно меняют выбранное значение, они не обновляют элемент, который видит пользователь (только при нажатии виджет будет видеть чек рядом с обновленным элементом).

Цепочка вызова .change () до конца также обновит виджет пользовательского интерфейса.

$("#target").val($("#target option:first").val()).change();

(обратите внимание, что я заметил это, когда использовал jQuery Mobile и коробку на рабочем столе Chrome, поэтому это может быть не везде).

Если у вас отключены параметры, вы можете добавить не ([отключено]) , чтобы запретить их выбор, что приведет к следующему:

$("#target option:not([disabled]):first").attr('selected','selected')

Другой способ сброса значений (для нескольких выбранных элементов) может быть следующим:

$("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;

});
$('#newType option:first').prop('selected', true);

Просто так:

$('#target option:first').prop('selected', true);

Я обнаружил, что установка атрибута selected не работает, если уже есть выбранный атрибут. Код, который я сейчас использую, сначала сбрасывает выбранный атрибут, затем выбирает первый вариант.

$('#target').removeAttr('selected').find('option:first').attr('selected', 'selected');

Вот как бы я это сделал:

$("#target option")
    .removeAttr('selected')
    .find(':first')     // You can also use .find('[value=MyVal]')
        .attr('selected','selected');

Хотя каждая функция, вероятно, не нужна ...

$('select').each(function(){
    $(this).find('option:first').prop('selected', 'selected');
});

у меня работает.

У меня сработало только использование триггера («изменение») в конце, например:

$("#target option:first").attr('selected','selected').trigger('change');

Если вы собираетесь использовать первый вариант по умолчанию, например

<select>
    <option value="">Please select an option below</option>
    ...

тогда вы можете просто использовать:

$('select').val('');

Это красиво и просто.

На обратной стороне ответа Джеймса Ли Бейкера я предпочитаю это решение, поскольку оно устраняет зависимость от поддержки браузера: first: selected ...

$('#target').children().prop('selected', false);
$($('#target').children()[0]).prop('selected', 'selected');

Для меня это сработало только тогда, когда я добавил следующий код:

.change();

Для меня это сработало только тогда, когда я добавил следующий код:Поскольку я хотел «сбросить» форму, то есть выбрать все первые параметры из всех выбранных в форме, я использовал следующий код:

$('form').find('select').each(function(){ $(this).val($("select option:first").val()); $(this).change(); });

Использовать:

$("#selectbox option:first").val()

Пожалуйста, найдите работу простой в этот JSFiddle.

$("#target").val(null);

нормально работал в Chrome

Если вы храните объект jQuery элемента select:

var jQuerySelectObject = $("...");

...

jQuerySelectObject.val(jQuerySelectObject.children().eq(0).val());

Проверьте этот лучший подход, используя jQuery с ECMAScript & nbsp; 6 :

$('select').each((i, item) => {
  var $item = $(item);
  $item.val($item.find('option:first').val()); 
});

Для меня это сработало только тогда, когда я добавил следующую строку кода

$('#target').val($('#target').find("option:first").val());

Вы можете выбрать любой вариант из раскрывающегося списка , используя его.

// 'N' can by any number of option.  // e.g.,  N=1 for first option
$("#DropDownId").val($("#DropDownId option:eq(N-1)").val()); 

$('select#id').val($('#id option')[index].value)

Заменить идентификатор с определенным идентификатором тега выбора и индекс с конкретным элементом, который вы хотите выбрать.

то есть

<select class="input-field" multiple="multiple" id="ddlState" name="ddlState">
                                        <option value="AB">AB</option>
                                        <option value="AK">AK</option>
                                        <option value="AL">AL</option>
</select>

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

$('select#ddlState').val($('#ddlState option')[0].value)

Это сработало для меня!

$("#target").prop("selectedIndex", 0);

Использовать:

alert($( "#target option:first" ).text());
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top