为什么命名您的HTML表单提交按钮“提交”破事?
-
22-08-2019 - |
题
在ASP.NET WebForms和ASP 3(经典ASP),我碰到一个问题出来,由此命名表单提交按钮“提交”将“破事”。下面是所提供的HTML:
<input type="submit" name="Submit" value="Submit" id="Submit" />
我说的“破事”,因为我不知道确切原因或发生了什么事。但症状通常是,有时按下提交按钮什么也没做,即它只是没有工作。但有时它的工作。
其实,我刚刚建立与下面的代码快速一页测试,并提交工作得很好:
<form id="form1" runat="server">
<div>
<asp:TextBox ID="txtTest" runat="server" />
<asp:Button ID="Submit" runat="server" Text="Submit" />
</div>
</form>
但是,在过去,这个问题出现了,并重新命名按钮总是让症状消失。
因此,没有任何理由任何HTML / HTTP /浏览器专家知道为什么设置ID =上一个提交按钮 “提交” 会造成什么问题?
修改强>
这 SO评论似乎暗示“提交”是一个保留关键字。但是,为什么在“ID”或“名”的属性与此intefere?这又如何“保留”的关键字获得这样可能会造成冲突的方式来实现?
再次感谢
解决方案
在form
元件有一个方法命名submit
,还具有形式为成员的形式的元素。
如果您在命名形式有submit
一个按钮,你可以使用document.form1.submit
访问它。然而,因为这是相同的名称submit
方法,这里就不再访问该方法的任何方式。如果您使用的方法来提交表单,将不再工作。
例如,如果有一个按钮,提交使用Javascript形式,即不工作:
<input type="button" name="submit" onclick="this.form.submit();" value="try" />
当按钮尝试使用submit
方法,它将代替(试图调用它,当和一个错误消息,如按键不是函数)得到本身的引用。
其他提示
我促请你所有的JavaScript的DOM的保留字望而却步。使用“我的”中定义的一切,或$,或别的东西,这显然是不打算通过保留字,你可以只是偶然超载而造成的破坏相冲突的前面。
代码隐藏所产生,允许你事件绑定到基于指定的值的命名的对象。
只需如果使用的onsubmit在表单提交问题
<form id="form1" runat="server" onsubmit="this.submit()">
<div>
<asp:TextBox ID="txtTest" runat="server" />
<asp:Button ID="Submit" runat="server" Text="Submit" Type="submit"/>
</div>
</form>
不隶属于 StackOverflow