如何避免发送隐藏显示input字段:无到服务器?
想象一下,你有一个窗体,你切换几个领域的可见性。 如果该字段没有显示,你不希望它的价值在请求。
你如何处理这种情况?
设置一个表单元素为禁用将停止去服务器,例如:
<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();
你可以使用JavaScript来设置禁用的属性。 “提交”button点击事件可能是最好的地方。
但是,我build议不要这样做。 如果可能的话,你应该在服务器上过滤你的查询。 这会更可靠。
如果要禁用隐藏父元素中的所有元素或特定元素,可以使用
$("div").filter(":hidden").children("input[type='text']").attr("disabled", "disabled");
关于什么:
$('#divID').children(":input").prop("disabled", true); // disable
和
$('#divID').children(":input").prop("disabled", false); // enable
要切换隐藏的div内的所有孩子input(select,checkbox,input,textareas等)。
一个非常简单的(但并不总是最方便的)解决scheme是删除“name”属性 – 标准要求浏览器不发送未命名的值,并且我知道所有的浏览器都遵守这个规则。
我要么从input中删除值,要么将input对象从DOM中分离出来,这样它就不存在了。