2013-05-28 56 views
1

我有一个由JavaScript提交的表单,有些东西已经破坏了它。给出的错误是与JS函数名称冲突的标签的ID名称

Error: TypeError: document.getElementById(...).submit is not a function 
Source File: http://localhost/FormProcess.js 

原来,当输入场的id属性分配值submit它搞砸事情严重。这是否意味着id值不能成为JavaScript保留字?我仍然没有得到的是submit()isn't even a reserved word那么为什么会导致问题呢?

<input type="button" id="submit" onclick="check(document.getElementById('txt1'), document.getElementById('txt2'))" /> 

document.getElementById("orderForm").submit() 

回答

4

在一种形式的冲突,使用表单控件的名称和ID,以创建名为DOM表单元素的属性,如:

<form onsubmit="alert(this.foo.value);" ...> 
    <input name="foo" value="bar"> 
    <input type="submit"> 
</form> 

所以在表单的提交处理程序this引用表单,this.foo引用输入的名称foo。因此,如果您使用“提交”名称进行表单控制,则表单的提交属性将引用控件,而不是提交方法。

因此,切勿使用名称与标准表单方法或属性相同的表单控件,例如,不要使用“action”,“name”,“submit”或“reset”等表单控件名称。

顺便说一句,“提交”不是reserved word,它只是一个DOM表单元素的标准方法。