2014-11-22 4 views
0

사용자가 환경 설정을 선택할 수있는 5 개의 드롭 다운 메뉴가 있습니다. 모든 드롭 다운에는 동일한 선택 항목이 있습니다. 사용자가 드롭 다운 1의 값을 선택한 경우 해당 드롭 다운에 해당 옵션을 사용할 수 없어야합니다. 마지막으로 드롭 다운 할 때 선택할 수없는 옵션이 4 개 있어야합니다.jQuery를 사용하여 여러 개의 드롭 다운에서 중복 값을 방지하는 방법

이것은 link에서 수행 된 것과 유사합니다. 하지만 이제 우리는 2 번 이상 드롭 다운을했습니다.

(For illustration, I show three dropdowns only)  

<select id="_go"> 
<option value="1">1</option> 
<option value="2">2</option> 
<option value="3">3</option> 
</select> 

<select id="_gogo"> 
<option value="1">1</option> 
<option value="2">2</option> 
<option value="3">3</option> 
</select> 

<select id="_gogogo"> 
<option value="1">1</option> 
<option value="2">2</option> 
<option value="3">3</option> 
</select> 

아래 코드

는 있지만 주목할 이상 2.

var $select = $("select[id$='go']"); 
$select.change(function() { 
    $select 
     .not(this) 
     .find('option') 
     .prop('disabled', '') 
     .filter('[value='+this.value+']') 
     .prop('disabled','disabled'); 
}); 
$select.eq(0).trigger('change'); 

나는 것은 두 개의 드롭 다운을 위해 잘 작동 사용자가 실수로 드롭 다운 중 하나에 대한 잘못된 옵션을 클릭 할 수 있다는 것이다 , 사용자가 다시 선택하면 원래 값을 다시 사용해야합니다.

길을 제안 해주세요. 미리 감사드립니다. 다른 선택 필드

demo

$(".go").change(function(){ 
    var selVal=[]; 
    $(".go").each(function(){ 
     selVal.push(this.value); 
    }); 

    $(this).siblings(".go").find("option").removeAttr("disabled").filter(function(){ 
     var a=$(this).parent("select").val(); 
     return (($.inArray(this.value, selVal) > -1) && (this.value!=a)) 
    }).attr("disabled","disabled"); 
}); 

$(".go").eq(0).trigger('change'); 


에서 그들을 해제 할 수 있도록

답변

5

대신 바로 옵션의 상태를 변경하는, 먼저, 선택 필드에서 현재 값을 얻을 필요 위의 코드는 여러 상자의 선택 상자와 함께 사용할 수 있습니다.

+0

고마워요! 그것은 작동하지만 다른 문제가 발생합니다 ... 코드를 추가 한 후 제출 버튼을 할 수 없을 때 선택한 옵션 값을 양식에 게시 할 수 없습니다 .. 왜 그런 지 알 수 없습니다 .. – user2335065

+0

정말로 당신이 의미하는 바를 따르지 마십시오. 문제의 jsfiddle을 설정할 수 있습니까? – shaN

+0

jsfiddle에서 첫 번째 드롭 다운에서 '2'를 선택하고 Chrome을 사용하여 요소를 검사 할 때 선택한 옵션이 < option value = "2"disabled = "disabled"> 2, 즉 선택한 보관 용 계정의 옵션도 사용할 수 없음을 의미합니다. HTML은 비활성화 된 값을 양식에 게시하지 않으므로 문제가됩니다. 감사! – user2335065

관련 문제