【问题标题】:In PHP Form, How to hinder or suppress posting input element when its parent is hidden? [duplicate]在 PHP 表单中,如何在其父元素隐藏时阻止或禁止发布输入元素? [复制]
【发布时间】:2012-12-15 08:32:02
【问题描述】:

可能重复:
How to avoid sending input fields which are hidden by display:none to a server?

<div style="display:none;">
  <input type="text"/>
</div>

使用上面的代码,输入将在提交表单时发布。 但是如何避免提交隐藏父元素的输入元素呢? 任何想法将不胜感激。

【问题讨论】:

  • 如果您没有通过,那么为什么要创建..如果它是基于选择的,请尝试通过 if else 来管理它
  • 我有一个 div 元素,它包含 20 个输入元素。我有 js 代码,它隐藏了 div 元素。
  • 你也可以参考这篇文章:stackoverflow.com/questions/3008035/…
  • 非常感谢您提供两个链接 Rishi。我认为可能没有直接的解决方案。
  • 想要达到这个效果的朋友请参考:jsfiddle.net/gKsTS

标签: php javascript html


【解决方案1】:

在发布您的表单时,有一个onClick 函数并在其中编写以下代码。此代码将帮助您找到所有div 标记,即display:none 并且div 为display:none,它将禁用所有输入元素。

查看http://jsfiddle.net/xyuY6/3/

var divs= document.getElementsByTagName('div');
for(var i = 0;i < divs.length; i++) {
    if(divs[i].style.display == 'none') {
        if ( divs[i].hasChildNodes() ){
           var inputs = divs[i].getElementsByTagName('input');
           for(var j = 0;j < inputs.length; j++) {
               inputs[j].disabled = true;
           }
        }
    }
}

【讨论】:

    【解决方案2】:

    改用display:none 可以解决您的问题。

    【讨论】:

    • 不好意思,应该没有。但是即使div被隐藏了,点击提交按钮的时候还是会传递它的子元素输入。
    • 在输入而不是 div 上设置 display:none 怎么样?
    • 因为我在div元素中有20个input元素,而且我有js代码,隐藏了div元素。向每个输入元素添加 display:none 不是我想要的。
    【解决方案3】:

    在输入元素上设置disabled

    【讨论】:

    • 因为我在div元素中有20个输入元素,而且我有js代码,隐藏了div元素。向每个输入元素添加 display:none 不是我想要的。
    【解决方案4】:

    这不是 PHP 问题,而是 HTML/DOM 问题。正如一个人在您的原始线程上评论的那样,如果您通过 PHP 生成此代码,您应该在您的输入元素中包含 disabled='disabled' 以防止提交,并在通过 javascript 取消隐藏父元素以允许提交时删除禁用属性再次元素值。

    如果您需要进一步的帮助,我会在此答案中添加 HTML 和 Javascript 标记。

    【讨论】:

    • 但是如果我有 2 个 div,每个 div 有 20 个输入。我还有另一个包含两个选项的选择元素:o1、o2。如果我选择 o1,则第二个 div 被设置为隐藏。如果我选择 o2,则第一个 div 被设置为隐藏。我不想同时隐藏 div 和所有 20 个输入。 Ty 等你的回复。
    【解决方案5】:

    如果没有其他方法,您可以在提交之前使用 Javascript 从隐藏的 div 中删除所有子元素,这样您就不会在 POST 中获取它们。

    【讨论】:

      猜你喜欢
      • 2010-11-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-08
      • 1970-01-01
      • 1970-01-01
      • 2020-12-08
      • 2020-11-21
      相关资源
      最近更新 更多