사용자가 환경 설정을 선택할 수있는 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');
에서 그들을 해제 할 수 있도록
고마워요! 그것은 작동하지만 다른 문제가 발생합니다 ... 코드를 추가 한 후 제출 버튼을 할 수 없을 때 선택한 옵션 값을 양식에 게시 할 수 없습니다 .. 왜 그런 지 알 수 없습니다 .. – user2335065
정말로 당신이 의미하는 바를 따르지 마십시오. 문제의 jsfiddle을 설정할 수 있습니까? – shaN
jsfiddle에서 첫 번째 드롭 다운에서 '2'를 선택하고 Chrome을 사용하여 요소를 검사 할 때 선택한 옵션이 < option value = "2"disabled = "disabled"> 2, 즉 선택한 보관 용 계정의 옵션도 사용할 수 없음을 의미합니다. HTML은 비활성화 된 값을 양식에 게시하지 않으므로 문제가됩니다. 감사! – user2335065