기본값을 선택하지 않은 경우 jQuery에서 옵션이 선택되어 있는지 확인하십시오.


답변:


270

정확히 무엇을 달성하고 싶은지 잘 모르겠지만이 코드는 저에게 효과적이었습니다.

<select id="mySelect" multiple="multiple">
  <option value="1">First</option>
  <option value="2">Second</option>
  <option value="3">Third</option>
  <option value="4">Fourth</option>
</select>

<script type="text/javascript"> 
$(document).ready(function() {
  if (!$("#mySelect option:selected").length) {
    $("#mySelect option[value='3']").attr('selected', 'selected');
  }
});
</script>

86
선택은 다음과 같이 더 읽기 쉬울 것입니다 :$("#mySelect").val(3);
Jørn Schou-Rode

6
이것은 올바른 길로 $("#mySelect option")[2]['selected'] = true; 나아 갔지만 이것을해야했습니다 .Firebug에서 객체 구조를 조사한 후에 알아 냈습니다.
Semperos

28
jQuery 1.6부터는 속성을 직접 설정할 수 있습니다. $("#mySelect").prop("selectedIndex", 2)
gradbot

1
.val (x) 버전은 Internet Explorer 8에서 작동하지 않으므로 @gradbot이 모든 브라우저에서 작동하므로 올바르게 작동합니다.
Sorcy

30

이를 위해 jQuery를 사용할 필요가 없습니다.

var foo = document.getElementById('yourSelect');
if (foo)
{
   if (foo.selectedIndex != null)
   {
       foo.selectedIndex = 0;
   } 
}

58
OP는 "jQuery 사용 중 ..."이라고 말 했으므로 무시하는 것이 불필요합니다.
BryanH

13
개인적으로 특정 질문을하면 다른 방법 대신 질문에 대한 답변을 받고 싶습니다.
vitto

18
때로는 당신이 찾는 대답이 당신이 기대하는 대답이 아닙니다.
MrBoJangles

5
그럼에도 불구하고 그는 jQuery를 요청했으며 특히 jQuery가 기본 JavaScript를 이해하지 못하는 경우 jQuery 답변을 이해하기가 훨씬 쉽습니다.
shmeeps

6
그것을하는 훌륭한 방법, 때로는 기본 자바 스크립트가 매우 편리 할 수 ​​있습니다!
한라 한

13

이 질문은 오래되었고 많은 견해를 가지고 있기 때문에 확실하게 사람들에게 도움이 될만한 물건을 버리겠습니다.

선택 요소에 선택된 항목이 있는지 확인하려면 다음을 수행하십시오.

if ($('#mySelect option:selected').length > 0) { alert('has a selected item'); }

또는 선택에 아무것도 선택되어 있지 않은지 확인하려면 다음을 수행하십시오.

if ($('#mySelect option:selected').length == 0) { alert('nothing selected'); }

또는 어떤 종류의 루프에 있고 현재 요소가 선택되어 있는지 확인하려는 경우 :

$('#mySelect option').each(function() {
    if ($(this).is(':selected')) { .. }
});

루프 중에 요소가 선택되지 않았는지 확인하려면

$('#mySelect option').each(function() {
    if ($(this).not(':selected')) { .. }
});

이것들은 이것을 수행하는 몇 가지 방법입니다. jQuery에는 동일한 작업을 수행하는 다양한 방법이 있으므로 일반적으로 가장 효율적인 방법을 선택하면됩니다.


"not"이 저에게 효과가 없었습니다 $ ( '# mySelect option'). each (function () {if ($ (this) .not ( ': selected')) {..}}); 사용 된 부정은 다음과 같습니다. (! $ (this) .is ( ': selected')) {..} 브라우저 : Chrome; jquery 버전 : 3.1.1
Anil kumar

12

lencioni의 대답 은 내가 추천하는 것입니다. ('#mySelect option:last')" #mySelect option[value='yourDefaultValue']"를 사용하여 옵션의 선택기를 변경하여 특정 값을 가진 옵션 을 선택할 수 있습니다 . 선택기에 대한 추가 정보 .

클라이언트의 선택 목록을 광범위하게 사용하는 경우 http://www.texotela.co.uk/code/jquery/select/ 플러그인을 확인 하십시오 . 선택 목록 작업에 대한 예제를 더 보려면 소스를 살펴보십시오.


9

선택한 옵션을 변경하는 기능입니다. jQuery 1.3.2에서 작동합니다.

function selectOption(select_id, option_val) {
    $('#'+select_id+' option:selected').removeAttr('selected');
    $('#'+select_id+' option[value='+option_val+']').attr('selected','selected');   
}

7
<script type="text/javascript"> 
$(document).ready(function() {
  if (!$("#mySelect option:selected").length)
   $("#mySelect").val( 3 );

});
</script>




2

이것은 내가 찾은 빠른 스크립트였습니다 .... 결과가 레이블에 지정됩니다.

$(".Result").html($("option:selected").text());

1

너희들은 선택하기에 너무 많은 일을하고있다. 값으로 선택하십시오.

$("#mySelect").val( 3 );

2
다른 옵션이 이미 선택되어 있는지에 관계없이 옵션 3을 선택합니다.
Jordan Ryan Moore


1

옵션이 선택되어 있는지 확인하고 그렇지 않은 경우 기본값을 선택하는 좋은 방법을 찾았습니다.

    if(!$('#some_select option[selected="selected"]').val()) {
        //here code if it HAS NOT selected value
        //for exaple adding the first value as "placeholder"
        $('#some_select option:first-child').before('<option disabled selected>Wybierz:</option>');
    }

#some_select가 기본적으로 선택된 옵션 이 아닌 경우 .val ()정의되지 않습니다


0
$("option[value*='2']").attr('selected', 'selected');
// 2 for example, add * for every option

0
$("#select_box_id").children()[1].selected

이것은 jquery에서 옵션이 선택되었는지 여부를 확인하는 또 다른 방법입니다. 부울 (참 또는 거짓)을 반환합니다.

[1]은 선택 상자 옵션의 색인입니다


0

선택 상자에서 이벤트를 변경하여 시작하면 선택한 옵션의 id 속성을 가져옵니다.

$("#type").change(function(){
  var id = $(this).find("option:selected").attr("id");

  switch (id){
    case "trade_buy_max":
      // do something here
      break;
  }
});

0

나는 비슷한 것을 찾고 있었고 이것을 발견했다.

$('.mySelect:not(:has(option[selected])) option[value="2"]').attr('selected', true);

클래스에서 아직 옵션을 선택하지 않은 모든 선택 메뉴를 찾고 기본 옵션 (이 경우 "2")을 선택합니다.

:selected대신 대신 사용하려고했지만 [selected]속성이없는 경우에도 항상 무언가가 선택되어 작동하지 않았습니다.


0

"선택된"속성이 있는지 확인하기 위해 각 옵션을 명시 적으로 확인해야하는 경우이를 수행 할 수 있습니다. 그렇지 않으면 option:selected첫 번째 기본 옵션의 값을 얻습니다.

var viewport_selected = false;      
$('#viewport option').each(function() {
    if ($(this).attr("selected") == "selected") {
        viewport_selected = true;
    }
});
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.