옵션이 선택되어 있는지 확인하는 방법


146
$('#mySelectBox option').each(function() {
    if ($(this).isChecked())
       alert('this option is selected');
     else
       alert('this is not');
});

분명히, isChecked작동하지 않습니다. 그래서 내 질문은 이것을하는 올바른 방법은 무엇입니까? 감사.


2
00zebra00, 아래 많은 옵션 중에서 답을 찾아 주셔서 감사합니다. 그러나 선택한 숙박 시설에 액세스하는 '최상의'방법에 대한 아래 의견의 대화를 확인하십시오. 일반적인 요지는 this.selectedjQuery ( $(this).prop("selected"))를 사용하지 않고 자바 스크립트 (을 사용하여 ) 의 요소에 직접 액세스 할 수 있지만 둘 다 작동 한다는 입니다.
veeTrain

답변:


263

최신 정보

선택한 옵션에 대한 더 직접적인 jQuery 방법은 다음과 같습니다.

var selected_option = $('#mySelectBox option:selected');

질문에 대답하는 .is(':selected')것은 당신이 찾고있는 것입니다.

$('#mySelectBox option').each(function() {
    if($(this).is(':selected')) ...

비 jQuery (아마도 모범 사례) 방법은 다음과 같습니다.

$('#mySelectBox option').each(function() {
    if(this.selected) ...

선택한 값만 찾으려면 다음을 시도하십시오.

$('#mySelectBox').val()

선택한 값의 텍스트를 찾으려면 다음을 수행하십시오.

$('#mySelectBox option').filter(':selected').text();

체크 아웃 : http://api.jquery.com/selected-selector/

다음에는 중복되는 SO 질문을 찾으십시오.

현재 선택된 옵션 취득 또는 설정 선택한 옵션 또는 어떻게 $ jQuery를에 (이) 선택한 옵션을 얻는 방법을? 또는 옵션 [selected = true]이 작동하지 않습니다


아무런 이유없이 jQuery를 사용합니다. 기본 js DOM 특성을 사용하십시오. 에 좀 걸릴
gdoron 모니카 지원하고있다

3
내 대답을 읽지 않은 것 같습니다. this.selected대신 $(this).is(":selected")jsperf가 필요하지 않은 것 같습니다. 나는 jQuery!를 사용하는 것에 대해 아무것도 없지만, 필요할 때, 오버 헤드와 더 많은 코드를 줄 때가 아니라 그것을 사용할 때 사용하십시오.
gdoron이 Monica를 지원합니다.

@gdoron this.selected은 완전히 유효하지만 올바른 jQuery 방법을 요청했습니다.
iambriansreed

2
@gdoron 나는 당신에게 전적으로 동의합니다. 아마도 jQuery를 개발 한 사람들은 개선 된 JavaScript 클래스를 사용해야 할 수도 있습니다. :)
iambriansreed

2
@gmoron 아니요, 제 질문은 투표를 거부했습니다. 그래도 좋은 형사 일.
iambriansreed

26

이 방법으로 선택한 옵션을 얻을 수 있습니다.

$('#mySelectBox option:selected')...

라이브 데모

당신이 반복 처리 모든 옵션을 원하는 경우에, 그것을 할 this.selected대신 this.isChecked하는 존재하지 않습니다

$('#mySelectBox option').each(function() {
    if (this.selected)
       alert('this option is selected');
     else
       alert('this is not');
});

라이브 데모

최신 정보:

이것을 사용하도록 제안하는 많은 답변이 있습니다.

$(this).is(':selected')글쎄, 그것은 훨씬 빠르고 쉽게 할 수 this.selected있으므로 왜 원시 DOM 요소 메소드가 아닌 그것을 사용해야합니까?!

읽다 귀하의 DOM 속성 및 기능을 알고jQuery 태그 정보


1
@ downvoter, 의견이 있으십니까? 그늘에서 벗어나 싸우십시오! :)
gdoron이 Monica를 지원합니다.

질문에 대답하지 않았지만 모범 사례를 제공했기 때문일 수 있습니다. ;)
iambriansreed

1
@iambriansreed. 하아?! 나는 질문에 대답하지 않았다? 질문의 어떤 부분이 답을 얻지 못했습니까?
gdoron이 Monica를 지원합니다.

2
여기서 흥미로운 토론. :) 왜 모든 DV가 있는지 잘 모르겠지만, 나는 모든 사람들에게 UV를 사용했습니다 this.selected. jQuery 남용 / 남용에 대한 귀하의 의견에 동의합니다. jQuery를 아는 것의 일부는 언제 그것을 사용 하지 않는지를 아는 것입니다. 즉, ':selected'선택기는 사용자 정의 Sizzle 선택기이므로이를 사용하면 querySelectorAll지원되는 브라우저에서 사용할 수 없습니다 . 멋진 짧은 코드를 제공하기 때문에 확실히 세계의 종말은 아니지만 개인적으로 Sizzle 전용 물건을 피하는 경향이 있습니다.

@gdoron Meta에서이 질문을 지적했듯이 관심이 있습니다. DV와 관련 하여이 노드 가 유용 할 수 있습니다.
VisioN

4

에 익숙하지 않거나 익숙하지 않은 경우 is()의 값을 확인하면 prop("selected")됩니다.

여기에서 볼 수 있듯이 :

$('#mySelectBox option').each(function() {
    if ($(this).prop("selected") == true) {
       // do something
    } else {
       // do something
    }
});​

편집 :

주석에서 @gdoron이 지적했듯이 옵션의 선택된 속성에 액세스하는 가장 빠르고 적절한 방법은 DOM 선택기를 사용하는 것입니다. 다음은 이 조치를 표시 하는 바이올린 업데이트 입니다.

if (this.selected == true) {

잘 작동하는 것 같습니다! 고마워 gdoron.


왜 그가 $(this).prop("selected")대신 사용해야하는지 설명해 주 this.selected시겠습니까?! 그것은 당신에게 무엇을 제공합니까 ??! 추신 내가 downvoter 아니에요
gdoron 지원 모니카

@gdoron, 내가 생각한 주요 이점은 친숙했다. 무엇이 is가장 잘 사용 되는지 잘 모르겠지만 prop 및 attr로 내 속성에 액세스하는 것을 좋아합니다. 대부분의 시나리오에서는 맛의 문제 일 수 있습니다. 예, 투표에 대한 호기심이 있습니다!
veeTrain

2
태그 info 의 DOM 속성 및 함수 알고 부분 을 읽는 것이 좋습니다 . 간단한 작업을 수행하기 위해 느린 코드 + 더 많은 코드를 사용할 이유가 없습니다. $ (...). is ( ": visiable") 과 같은 복잡한 선택기에 사용해야합니다 . jQuery .is()$(...).is('.foo > [name="aaa"] input') or for properties that are not native DOM elements properties like
gdoron은 Monica를 지원합니다.

@gdoron; 지적 해 주셔서 감사합니다. 이에 따라 답변을 업데이트했습니다.
veeTrain

가능성 없음. 다른 사람들보다 낫다고 생각되면 내 대답을 찬성 할 수 있습니다. (나는 대답을 $(this).is(':selected')받아들이고 싶지 않다 . Stackoverflow는 일반적인 실수가 아닌 모범 사례를 배우기 위해 사용되어야한다 ...)
gdoron은 Monica를 지원하고있다.

3

jquery 로이 방법을 사용할 수 있습니다 :

$(document).ready(function(){
 $('#panel_master_user_job').change(function () {
 var job =  $('#panel_master_user_job').val();
 alert(job);
})
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select name="job" id="panel_master_user_job" class="form-control">
                                    <option value="master">Master</option>
                                    <option value="user">User</option>
                                    <option value="admin">Admin</option>
                                    <option value="custom">Custom</option>
                                </select>


2

사용하다

 $("#mySelectBox option:selected");

특정 옵션이 있는지 테스트하려면 myoption:

 if($("#mySelectBox option:selected").text() == myoption){
          //...
 }

당신에게 downvote하지 않았습니다 (여기에는 직렬 downvotes가 있습니다!) 그러나 무엇 myoption입니까 ???
gdoron은 Monica를 지원합니다.

1
OP가 선택한 경우 테스트하려는 옵션 옵션 인 문자열
Mouna Cheikhna

downvote와 관련하여 내 대답 아래의 주석을 읽으십시오 .
gdoron은

2

이것을 선택 목록으로 고려하십시오.

<select onchange="var optionVal = $(this).find(':selected').val(); doSomething(optionVal)">

                                <option value="mostSeen">Most Seen</option>
                                <option value="newst">Newest</option>
                                <option value="mostSell">Most Sell</option>
                                <option value="mostCheap">Most Cheap</option>
                                <option value="mostExpensive">Most Expensive</option>

                            </select>

그런 다음 선택한 옵션을 다음과 같이 확인하십시오.

function doSomething(param) {

    if ($(param.selected)) {
        alert(param + ' is selected!');
    }

}

0

제 경우에는 왜 선택된 것이 항상 사실인지 모르겠습니다. 그래서 내가 생각할 수있는 유일한 방법은 다음과 같습니다.

var optionSelected = false;
$( '#select_element option' ).each( function( i, el ) {
    var optionHTMLStr = el.outerHTML;

    if ( optionHTMLStr.indexOf( 'selected' ) > 0 ) {
        optionSelected = true;
        return false;
    }
});

0

옵션이 선택되어 있는지 확인하려는 경우 모든 옵션을 반복 할 필요는 없습니다. 그냥 해

if($('#mySelectBox').val()){
    // do something
} else {
    // do something else
}

참고 : 값이 0 인 옵션을 선택할 수있는 경우 if 조건을로 변경해야합니다. $('#mySelectBox').val() != null


0

특정 값에 대해 옵션 선택 상태를 확인해야하는 경우 :

$('#selectorId option[value=YOUR_VALUE]:selected')

0

자바 스크립트를 통해 선택한 옵션을 확인하려면

가장 간단한 방법은 해당 태그에 onchange 속성을 추가하고 js 파일에 함수를 정의하는 것입니다 .html 파일에 이와 같은 옵션이있는 경우 예를 참조하십시오

 <select onchange="subjects(this.value)">
               <option>Select subject</option>
               <option value="Computer science">Computer science</option>
               <option value="Information Technolgy">Information Technolgy</option>
               <option value="Electronic Engineering">Electronic Engineering</option>
               <option value="Electrical Engineering">Electrical Engineering</option>
 </select>

이제 js 파일에 함수를 추가하십시오.

function subjects(str){
    console.log(`selected option is ${str}`);
}

PHP 파일에서 선택한 옵션을 확인하려면

태그에 name 속성을 부여하고 PHP 파일 전역 변수 / array ($ _GET 또는 $ _POST)에 액세스하십시오 .html 파일이 이와 같은 경우 예제를 참조하십시오

<form action="validation.php" method="POST">
             Subject:<br>
            <select name="subject">
               <option>Select subject</option>
               <option value="Computer science">Computer science</option>
               <option value="Information Technolgy">Information Technolgy</option>
               <option value="Electronic Engineering">Electronic Engineering</option>
               <option value="Electrical Engineering">Electrical Engineering</option>
            </select><br>

         </form>

그리고 PHP 파일 validation.php에서 다음과 같이 액세스 할 수 있습니다

$subject = $_POST['subject'];
echo "selected option is $subject";
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.