根据另一个选择的值隐藏选择选项
Hide select options depending on value of another select
这里几乎没有类似的问题,但都不适合我。
我需要一种有效的方法来根据另一个选择中的选定值过滤选择中的选项。第一个选择由具有简单数值1,2,3的选项组成…第二个选择由"组"中的选项组成,应进行筛选。选项的值以百为单位,即102、103、202、254…
如果选择了值为1的选项,则在第二次选择中,只有值以1开头的选项才可见。每次用户选择一个选项时都应该发生这种情况。
我试过这段代码,但它不起作用。
function filterInstitution(elem){
var currRow = elem.closest("tr")
var inType = elem.val();
currRow.find(".CompName option").toggle(false);
currRow.find(".CompName option").each(function(){
$("[value^="+ inType + "]", $(this)).toggle(true);
});
}
这是Fiddle。它只包含几个选项,但实际上,第二个选项由80多个选项组成。
我的想法是隐藏所有选项,只显示从第一次选择的数字开始的选项。我哪里错了?
当你说时
$("[value^="+ inType + "]", $(this))
您告诉jQuery查找满足条件"[value^="+ inType + "]"
并且也是$(this)
的派生元素。您要做的是检查$(this)
是否符合条件。
这里有一个不同的版本:
var currRow = elem.closest("tr")
var inType = elem.val();
currRow.find(".CompName option")
.hide() //equivalent to .toggle(false)
.filter("[value^="+ inType + "]") //this will do the filter you desire
.show(); //equivalent to .toggle(true)
Fiddle Here:http://jsfiddle.net/pz9cjmLg/4/
如果我没有记错的话,只有Firefox支持隐藏个人<选项>s。我认为你需要删除你不想显示的选项。
尝试
$(document).ready(function () {
$(".CompType").change(function () {
filterInstitution(this)
});
});
function filterInstitution(elem) {
var value = elem.value;
var options = $(".CompName option");
options.hide();
var op = options.filter(function () {
return value == $(this).val().slice(0, 1);
}).show();
$(".CompName").val(op.eq(0).val());
}
演示
相关文章:
- 基于其他下拉菜单选择隐藏/显示下拉菜单
- 货到付款选择隐藏/显示付款方式
- 根据下拉选择隐藏四个输入框
- 如何根据下拉菜单选择隐藏/显示文本框
- 如何根据下拉列表中的选择隐藏表格行
- 根据多个选择隐藏选择选项
- 如何根据选择隐藏谷歌图表工具提示操作
- 但是,根据下拉选择隐藏和显示输入文本
- 通过复选框选择隐藏动态谷歌地图标记
- 尝试使用jQuery在父DOM中选择隐藏字段
- 启动-选择隐藏事件未触发
- PHP - WebCalendar -基于下拉列表选择隐藏字段
- 引导下拉隐藏点击选择隐藏下拉
- 更改html列表以选择隐藏的输入类型
- 如何用jQuery选择隐藏表格中的行
- 根据单选按钮选择隐藏OK按钮
- 选择隐藏和显示问题:多于两个元素
- 根据下拉列表中的选择隐藏和显示面板
- 选项列表中选择隐藏和显示
- 按Id选择隐藏的表单元素