我在表中有一行包含一个复选框和一些其他表单字段(文本框,隐藏字段,选择列表)。当复选框被选中时,我想禁用该行中除隐藏字段之外的所有表单字段。我有这个工作的大部分,但我似乎不能忽视隐藏的领域。
在表行中选择所有表单字段,但忽略选择中的隐藏字段的最佳方法是什么?
解决方法
假设“隐藏”你的意思是type =“hidden”ie:
<input type="hidden" name="foo" value="bar">
那么你可以使用attribute not equals selector来做到这一点:
$("tr input:checkBox").click(function() { var cb = $(this); var tr = $(this).closest("tr"); if (cb.val()) { tr.find("input[type!='hidden']").attr("disabled",true); } else { tr.find("input[type!='hidden']").removeAttr("disabled"); } });
我的一般建议是避免属性选择器。他们很慢。给一个类的相关输入(隐藏的或不隐藏的),然后在选择器中使用它。
然而,如果你的意思是“隐藏”,如“不可见”,那么使用:visible
选择器:
$("tr input:checkBox").click(function() { var cb = $(this); var tr = $(this).closest("tr"); if (cb.val()) { tr.find("input:visible").attr("disabled",true); } else { tr.find("input:visible").removeAttr("disabled"); } });