首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何避免向服务器发送被display:none隐藏的输入域?

如何避免向服务器发送被display:none隐藏的输入域?
EN

Stack Overflow用户
提问于 2009-09-03 23:29:40
回答 7查看 78.3K关注 0票数 91

假设您有一个表单,您可以在其中切换多个字段的可见性。如果该字段没有显示,您就不希望它的值出现在请求中。

你是如何处理这种情况的?

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2009-09-03 15:34:35

将表单元素设置为禁用将阻止其转到服务器,例如:

代码语言:javascript
复制
<input disabled="disabled" type="text" name="test"/>

在javascript中,它的意思是:

代码语言: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中:

代码语言:javascript
复制
   $('form > input:hidden').attr("disabled",true);
   $('form').submit();
票数 132
EN

Stack Overflow用户

发布于 2009-09-03 15:35:21

您可以使用javascript来设置disabled属性。“提交”按钮单击事件可能是执行此操作的最佳位置。

然而,我建议你不要这么做。如果可能,您应该在服务器上过滤您的查询。这将更加可靠。

票数 13
EN

Stack Overflow用户

发布于 2013-01-25 12:52:49

如果您想禁用隐藏父元素中的所有元素或某些元素,可以使用

代码语言:javascript
复制
$("div").filter(":hidden").children("input[type='text']").attr("disabled", "disabled");

此示例http://jsfiddle.net/gKsTS/禁用隐藏div中的所有文本框

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1374147

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档