想象一下,您有一个表单,可以在其中切换几个字段的可见性。而且,如果未显示该字段,则您不希望请求该字段的值。
您如何处理这种情况?
Answers:
将表单元素设置为禁用将停止将其发送到服务器,例如:
<input disabled="disabled" type="text" name="test"/>
在javascript中,这将意味着:
var inputs = document.getElementsByTagName('input');
for(var i = 0;i < inputs.length; i++) {
if(inputs[i].style.display == 'none') {
inputs[i].disabled = true;
}
}
document.forms[0].submit();
在jQuery中:
$('form > input:hidden').attr("disabled",true);
$('form').submit();
.prop()
代替代替.attr()
来获取和设置禁用属性和选中属性。.attr()
在某些情况下,检查和/或设置使用将返回不良结果。在评论yorch所指的内容之前,请先阅读jQuery文档。
您可以使用javascript设置Disabled属性。“提交”按钮单击事件可能是执行此操作的最佳位置。
但是,我建议不要这样做。如果可能,您应该在服务器上过滤查询。这样会更可靠。
如果要禁用隐藏的父元素中的所有元素或某些元素,则可以使用
$("div").filter(":hidden").children("input[type='text']").attr("disabled", "disabled");
此示例http://jsfiddle.net/gKsTS/禁用隐藏div中的所有文本框
:input
代替,input
您还可以轻松禁用allselect
和textarea
elements