jQuery를 사용하여 드롭 다운 옵션을 선택하는 방법은 무엇입니까?


157

jQuery가 <option>드롭 다운 상자에서, 예를 들어 4 번째 항목 을 선택하도록 할 수 있는지 궁금합니다 .

<select>
    <option></option>
    <option></option>
    <option></option>
    <option></option>
    <option></option>
</select>

사용자가 링크를 클릭 한 다음 <select>사용자가를 클릭하여 선택한 것처럼 상자의 값을 변경하도록합니다 <option>.


4
옵션에 가치가 있습니까?
빅터

답변:


184

어때요?

$('select>option:eq(3)').attr('selected', true);

http://www.jsfiddle.net/gaby/CWvwn/의


최신 버전의 jquery의 경우 .prop()대신.attr()

$('select>option:eq(3)').prop('selected', true);

http://jsfiddle.net/gaby/CWvwn/1763/의


3
imo 이것은 작동하지 않아야합니다. 대신 선택 자체의 상태를 변경하여 옵션의 선택된 상태를 트리거해야합니다 :)
Ja͢ck

1
selectElement.selectedIndex = index;잭이 의미하는 바입니다.
rlemon

@ rlemon, 이해하지만 속성을 사용할 selectedIndex때 다중 선택에 사용할 수 없습니다 multiple. 선택한 요소를 설정 하는 일반적인 ( html ) 방법은 요소의 selected속성입니다 option.
가브리엘 페트리 올리

@ GabyakaG.Petrioli 일반적인 방법은 실제로 selected각 해당 options요소 의 속성 을 설정 true하고 나머지는 false명시 적으로 지정하는 것입니다. 여러 선택은 실제로 매우 불쾌합니다 :)
Ja͢ck

6
@sunnyiitkgp onchange값이 프로그래밍 방식으로 변경 될 때 이벤트가 트리거되지 않습니다. 당신은 추가 할 수 .trigger('change')도 이벤트를 해고 끝에서 ( 이 값에 관계없이 발생합니다 있지만 실제로 변경 한 )
가브리엘 Petrioli에게


54

HTML 선택 요소에는 selectedIndex특정 옵션을 선택하기 위해 작성할 수 있는 속성이 있습니다.

$('select').prop('selectedIndex', 3); // select 4th option

일반 JavaScript를 사용하면 다음을 수행 할 수 있습니다.

// use first select element
var el = document.getElementsByTagName('select')[0]; 
// assuming el is not null, select 4th option
el.selectedIndex = 3;

7
이것은 정답이 될 것입니다 ... 그것은 가장 깨끗하고 깨끗한 해결책처럼 보입니다 ...
Denys Séguret

1
문제는 'onchange'이벤트를 발생시키지 않는다는 것입니다.
Guy Korland

2
@GuyKorland이 시연 중 다른 답변의 없음으로 발생 여기 ; 이벤트를 시작하려면 수동으로 수행해야합니다.
Ja͢ck

1
@Jack 짧은 방법이 있습니까? 내가 찾은 유일한 방법 : var fireEvent = function (selectElement) {if (selectElement) {if (selectElement의 "fireEvent") {selectElement.fireEvent ( "onchange"); } else {var evt = document.createEvent ( "HTMLEvents"); evt.initEvent ( "change", false, true); selectElement.dispatchEvent (evt); }}}
Guy Korland

4
@GuyKorland jQuery는 .trigger()그것을 위해 노출 하지만, 이미 코드 로이 작업을 수행하고 있으므로 변경 처리기를 직접 호출하는 것이 쉽습니다.
Ja͢ck

30

나는 이것을 이렇게 할 것입니다

 $("#idElement").val('optionValue').trigger('change');

3
이것은 선택된 답변이어야합니다
Uzumaki Naruto

2
$ ( "# idElement"). val ( 'optionValue'). change ()도 작동 가능
Ullullu

24

옵션에 값이있는 경우 다음을 수행 할 수 있습니다.

$('select').val("the-value-of-the-option-you-want-to-select");

'select'는 선택 또는 클래스 선택기의 ID입니다. 또는 하나의 선택 항목 만있는 경우 예와 같이 태그를 사용할 수 있습니다.


2
바로 내가 필요한 것입니다. 감사.
chapman84

23

가장 쉬운 방법은 val(value)기능입니다.

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

그리고 선택한 값을 얻으려면 인수가 없습니다.

$('select').val();

또한 당신이 가지고 있다면 <option value="valueToSelect">...</option>, 당신은 할 수 있습니다 :

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

데모


또한 작동했습니다 $ ( '# SelectCtrlId'). val ( 'ValueToSelect');
Sai

9

특정 값을 가진 옵션을 선택하려면 다음 코드를 사용하십시오.

$('select>option[value="' + value + '"]').prop('selected', true);

$ ( 'select'). val (값); 왜 그렇게 심각합니까? ;)
Zeeshan

1
@Zee 응답 코드는 다중 선택도 허용합니다.
Azghanvi

5
 Try with the below codes. All should work. 
    $('select').val(2);
    $('select').prop('selectedIndex', 1);
    $('select>option[value="5"]').prop('selected', true);
    $('select>option:eq(3)').attr('selected', 'selected');
    $("select option:contains(COMMERCIAL)").attr('selected', true);

3

nth-child ()를 eq ()보다 선호합니다 .0 기반이 아닌 1 기반 색인을 사용하기 때문에 뇌에서 약간 더 쉽습니다.

//selects the 2nd option
$('select>option:nth-child(2)').attr('selected', true);

날짜가있는 항목을 조작 할 때 "1 기반 색인"이 더 좋습니다. 많은 문제에서 나를 구해줍니다. 감사.
TCB13

3

''요소를 사용하면 일반적으로 'value'속성이 사용됩니다. 그러면 설정하기가 더 쉬워집니다.

$('select').val('option-value');



1
 $('select>option:eq(3)').attr('selected', 'selected');

여기서주의해야 할 점은 선택 / 옵션의 변경 이벤트를 자바 스크립트로 감시하는 .trigger('change')경우 코드가 추가 되도록 추가해야한다는 것입니다.

 $('select>option:eq(3)').attr('selected', 'selected').trigger('change');

호출만으로도 .attr('selected', 'selected')이벤트가 트리거되지 않기 때문에

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.