无法设置表单的隐藏字段

时间:2019-02-13 08:20:21

标签: javascript forms hidden ecmascript-5

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

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的值仍为“”。

有什么建议吗?

2 个答案:

答案 0 :(得分:4)

getElementsByName返回一个元素数组,即使只有一个元素也是如此。

您可以做两件事:

更改此:

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

对此:

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

或者,如果您想继续使用getElementsByName,则可以这样访问其值:

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

答案 1 :(得分:2)

如果您选择使用“ getElementsByName”,请记住它是复数形式(get Elements ByName),因此它将返回一个节点元素的数组列表。因此,这种访问数组元素的方式可以帮助class _ProductManagerState extends State<ProductManager> { List<String> _products = ['Product 1', 'Product 2']; @override Widget build(BuildContext context) { /*Rest of the code*/ } }