【发布时间】:2014-08-17 01:42:20
【问题描述】:
我有一个带有 3 个 jQuery Chosen 下拉选择菜单的表单。我怎样才能做到这一点,当一个选项在其中一个菜单中被选中时,它会隐藏在另外两个菜单中?此外,如果用户选择其他内容或空白,则该选项应再次在其他 2 个菜单中可用。感谢您的帮助。
HTML
<form action="" method="post" class="addEdit">
<label for="genre_1">Genre 1:</label>
<select name="genre_1" id="genre_1" class="chosenGenreData">
<option value=""></option>
<option value="Action">Action</option>
<option value="Adventure">Adventure</option>
<option value="Biography">Biography</option>
</select>
<br><label for="genre_2">Genre 2:</label>
<select name="genre_2" id="genre_2" class="chosenGenreData">
<option value=""></option>
<option value="Action">Action</option>
<option value="Adventure">Adventure</option>
<option value="Biography">Biography</option>
</select>
<br><label for="genre_3">Genre 3:</label>
<select name="genre_3" id="genre_3" class="chosenGenreData">
<option value=""></option>
<option value="Action">Action</option>
<option value="Adventure">Adventure</option>
<option value="Biography">Biography</option>
</select>
</form>
jQuery
>$(function() {
$(".chosenGenreData").chosen();
$('#genre_1').change(function() {
var selectedVal = $(this).val();
if (selectedVal != '') {
$("select#genre_2 option[value='"+selectedVal+"']").hide();
$("select#genre_2").trigger("chosen:updated");
$("select#genre_3 option[value='"+selectedVal+"']").hide();
$("select#genre_3").trigger("chosen:updated");
}
if (selectedVal == '') {
$("select#genre_2 option[value='"+selectedVal+"']").show();
$("select#genre_2").trigger("chosen:updated");
$("select#genre_3 option[value='"+selectedVal+"']").show();
$("select#genre_3").trigger("chosen:updated");
}
});
$('#genre_2').change(function() {
var selectedVal = $(this).val();
if (selectedVal != '') {
$("select#genre_1 option[value='"+selectedVal+"']").hide();
$("select#genre_1").trigger("chosen:updated");
$("select#genre_3 option[value='"+selectedVal+"']").hide();
$("select#genre_3").trigger("chosen:updated");
}
if (selectedVal == '') {
$("select#genre_1 option[value='"+selectedVal+"']").show();
$("select#genre_1").trigger("chosen:updated");
$("select#genre_3 option[value='"+selectedVal+"']").show();
$("select#genre_3").trigger("chosen:updated");
}
});
$('#genre_3').change(function() {
var selectedVal = $(this).val();
if (selectedVal != '') {
$("select#genre_1 option[value='"+selectedVal+"']").hide();
$("select#genre_1").trigger("chosen:updated");
$("select#genre_2 option[value='"+selectedVal+"']").hide();
$("select#genre_2").trigger("chosen:updated");
}
if (selectedVal == '') {
$("select#genre_1 option[value='"+selectedVal+"']").show();
$("select#genre_1").trigger("chosen:updated");
$("select#genre_2 option[value='"+selectedVal+"']").show();
$("select#genre_2").trigger("chosen:updated");
}
});
});
【问题讨论】:
-
你的方法有什么问题?
-
使用我现在拥有的代码,它确实隐藏了该选项,但是,如果我将其更改为其他内容,它不会在其他选择菜单中重新显示该选项。它保持隐藏状态。
-
我不是 jQuery Chosen 用户,但你有没有试过删除
$("select#genre_1").trigger("chosen:updated");并查看它是否被隐藏?因为我在另一个问题上看到你真的不需要隐藏select。 -
hide() 有效, show() 无效。需要这行代码来触发 Chosen 中的更改。
标签: jquery select option jquery-chosen multiple-select