JQuery에서 select에 옵션이 이미 있는지 확인하는 방법


169

JQuery에서 select에 옵션이 이미 존재하는지 어떻게 확인할 수 있습니까?

동적으로 옵션을 선택에 추가하고 싶으므로 복제를 방지하기 위해 옵션이 이미 존재하는지 확인해야합니다.

답변:


333

이미 존재하는 경우 true로 평가됩니다.

$("#yourSelect option[value='yourValue']").length > 0;

5
Jquery 1.6 이상으로 업그레이드, yourValue를 따옴표로 묶습니다
Bob

1
네. 따옴표는 매우 중요합니다.
bobetko

2
따옴표로 yourValue를 묶지 않고 jquery 1.7.1에서 작동합니다.
Mathias F

위의 솔루션에서 case 또는 toLowerCase를 어떻게 무시할 수 있습니까? 드롭 다운 목록에 $ .each가 필요합니까?
벤 Sewards

1
대소 문자 구분 일치를 구현하려면 어떻게해야합니까? 간단한 $ .each 함수를 사용 하시겠습니까?
Chaudhry Waqas

21

jQuery를 사용하는 다른 방법 :

var exists = false; 
$('#yourSelect  option').each(function(){
  if (this.value == yourValue) {
    exists = true;
  }
});

6
-1 jQuery가 다른 모든 답변과 마찬가지로 루프를 수행하는 대신 기본적으로 루프를 직접 수행하고 있습니다. 이것이 효과가 있지만 바퀴를 다시 발명합니다.
피터

14
-1 가치가 있는지 확실하지 않습니다. 이것은 초보자에게 도움이 될 수있는 프로세스를 명시 적으로 보여줍니다. 확실히 최선의 대답은 아니지만 올바른 답변입니다.
roberthuttinger

1
그리고 일부는 나와 같은 수동 접근 방식과 같습니다. 이것은 또한 다른 것과 같이 0 또는 1을 생성하고 변환 해야하는 대신 부울을 추가하는 단계를 결합합니다. 어느 쪽이든 두 단계를 수행해야하기 때문에 두 가지 접근 방식이 모두 훌륭하다고 말합니다. 예를 들어 공백 길이를 판단하지 않으면 프로세스, 나에게 더 잘 보이고 오류가 덜 발생하는 것처럼 보입니다 .length.
vapcguy

3
이것들에 대해 하나 더해, 당신은 또한 당신의 ValueValue에있는 캐릭터를 걱정할 필요가 없습니다
Fabio C.

1
이 값과 alnort29의 대답은 "yourValue"가 무엇인지 모르는 경우 (예 : 사용자 입력의 경우) 실제로 기존 값을 확인하는 가장 좋은 방법입니다. "jQuery를 사용하여"수행 할 수 있도록 단일 문자열을 작성하려면 입력 삭제를 수행해야하며 수십 년 동안 SQL을 괴롭히는 코드 사례가 필요합니다. 따라서 -1은 완전히 보증되지 않습니다. 이 질문은 심지어 "동적으로"값을 삽입하고 싶다고 말합니다. 문자열을 동적으로 패치하지 마십시오. 또한 password = " '+ string +'" '인 사용자로부터 1을 선택하지 않습니까?
Aaa

20
if ( $("#your_select_id option[value=<enter_value_here>]").length == 0 ){
  alert("option doesn't exist!");
}

2
닫는 대괄호 "option [value = <enter_value_here>]"
KB가 없습니다.

17
var exists = $("#yourSelect option")
               .filter(function (i, o) { return o.value === yourValue; })
               .length > 0;

이는 자동으로 값을 이스케이프 처리하여 텍스트에서 임의의 따옴표를 다루기가 훨씬 쉽습니다.


2

작동하지 않으면 다음을 수행해야합니다.

if ( $("#your_select_id option[value='enter_value_here']").length == 0 ){
  alert("option doesn't exist!");
}

1

그것은 나를 도와줍니다 :

  var key = 'Hallo';

   if ( $("#chosen_b option[value='"+key+"']").length == 0 ){
   alert("option not exist!");

    $('#chosen_b').append("<option value='"+key+"'>"+key+"</option>");
    $('#chosen_b').val(key);
   $('#chosen_b').trigger("chosen:updated");
                         }
  });

0

나는 비슷한 문제가 있었다. select 컨트롤에 대한 루프가 jquery select 요소를 변수에 저장하고 매번 dom을 통해 검색을 실행하는 대신 다음을 수행했습니다.

function isValueInSelect($select, data_value){
    return $($select).children('option').map(function(index, opt){
        return opt.value;
    }).get().includes(data_value);
}

0

다른 답변의 대부분이 나를 위해 일했지만 .find ()를 사용했습니다.

if ($("#yourSelect").find('option[value="value"]').length === 0){
    ...
}
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.