定义表单控件的id和name注意点

最近在学习JavaScript,在编写一个demo时出现一个错误。为表单中的提交按钮控件定义的id属性值为submit,致使程序出错。如下代码:(js代码省略)

<form method="post" name="register">
	User  :<input type="text" name="user" /><br />
	Password:<input type="password" name="pass" /><br />
	<input type="button" id="submit" value="提交" />
</form>

把id属性值改为regist后,程序正常运行

原因介绍:

当表单控件的id为submit等属性值时,由于JavaScript是一种动态语言,它允许动态地为对象增加属性和方法。访问表单控件有一种简单的方法:formObj.elementName,  其中elementName就是表单域的id或者name属性值——这样可视为表单对象有一个elementName属性,也就是说,当表单a内包含id或者name分别为x,y的两个表单域时,相当于为该表单对象增加了x,y两个属性

理解了上面的知识后,不难明白:当指定<form />元素中<input />元素的id属性值为submit时,<form />元素对应的DOM对象就增加了submit属性——这就覆盖了该对象中原有的submit方法,从而导致无法提交表单。

注:如果该按钮不做为<form />元素的子元素,则不会出现任何问题

原文地址:https://www.cnblogs.com/sMKing/p/5970018.html