如何避免将被 display:none 隐藏的输入字段发送到服务器?

新手上路,请多包涵

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

你如何处理这种情况?

原文由 glaz666 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 452
2 个回答

将表单元素设置为禁用将阻止它进入服务器,例如:

 <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();

原文由 karim79 发布,翻译遵循 CC BY-SA 2.5 许可协议

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

但是,我建议完全不要这样做。如果可能,您应该在服务器上过滤您的查询。这样会更靠谱。

原文由 Benedict Cohen 发布,翻译遵循 CC BY-SA 2.5 许可协议

推荐问题