【问题标题】:Can not set hidden field of form无法设置表单的隐藏字段
【发布时间】:2019-02-13 08:20:21
【问题描述】:

我试图在提交之前在表单中设置hidden 类型的input,但我不明白为什么它没有设置我的字段:

HTML

    <form id="createForm" method="post" action="[myhost]/[myaddress]/[mypath]" enctype="multipart/form-data" >
      <input type="hidden" id="ticket" name="Ticket" />
    </form>

   <input id="setterInput" type="text"/>
   <button onclick="methods.setHidden()"></button>

JS

window.methods = {
    setHidden: function () {
            var form = document.getElementById('createForm');
            var setter=document.getElementById('setter');
            var input = document.getElementsByName('Ticket');
            input.value = setter.value;
            console.log(input.value); //has the desired value
      //looking with the debugger in my form at the target input, the value is still default
    }

}

当我在console.log 行中设置调试器时,设置了input 变量。但它不会反映在form 中。 当我滚动表单时,input 的值仍然是“”。

有什么建议吗?

【问题讨论】:

    标签: javascript forms hidden ecmascript-5


    【解决方案1】:

    getElementsByName 返回一个元素数组,即使只有一个元素。

    你可以做两件事:

    改变这个:

    var input = document.getElementsByName('Ticket');
    

    到这里:

    var input = document.getElementById('ticket');
    

    或者如果你想继续使用getElementsByName,你可以像这样访问它的值:

    var input = document.getElementsByName('Ticket')[0];
    

    【讨论】:

    • 它成功了,从id而不是name访问它,即使在最初的情况下,对象也不是null
    【解决方案2】:

    如果您选择使用“getElementsByName”,请记住它是复数(getElementsByName),因此它将返回给我们一个节点元素的数组列表。所以这种访问数组元素的方式可以帮助var input = document.getElementsByName('Ticket')[0];

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多