为什么命名你的HTML表单提交按钮"提交"中断了什么?

and*_*ndy 4 html http-post form-post form-submit

在ASP.NET webforms和ASP 3(经典ASP)中,我遇到了一个问题,即命名表单提交按钮"提交"将"破坏".下面是呈现的HTML:

<input type="submit" name="Submit" value="Submit" id="Submit" />
Run Code Online (Sandbox Code Playgroud)

我说"破坏事物"因为我不确定为什么或发生了什么.但症状通常是按下提交按钮有时什么也没做,即它只是没有用.但有时它确实有效.

事实上,我刚刚使用下面的代码构建了一个快速的单页测试,并提交工作正常:

<form id="form1" runat="server">
<div>
    <asp:TextBox ID="txtTest" runat="server" />
    <asp:Button ID="Submit" runat="server" Text="Submit" />
</div>
</form>
Run Code Online (Sandbox Code Playgroud)

但是,在过去,这个问题已经出现,重命名按钮总是使症状消失.

那么,是否有任何HTML/HTTP /浏览器专家知道为什么在提交按钮上设置id ="submit"会导致任何问题?

编辑

这个SO评论似乎暗示"提交"是一个保留的关键字.但为什么"id"或"name"属性会与此相关?这个"保留"关键字如何以导致冲突的方式实现?

再次感谢

Guf*_*ffa 15

form元素有一个名为的方法submit,但在表单中也有表单元素作为成员.

如果您在命名的表单中有一个按钮,则submit可以使用它来访问它document.form1.submit.但是,因为它与submit方法名称相同,所以不再有任何方法可以访问该方法.如果您使用该方法提交表单,那将不再有效.

例如,如果您有一个使用Javascript提交表单的按钮,则不起作用:

<input type="button" name="submit" onclick="this.form.submit();" value="try" />
Run Code Online (Sandbox Code Playgroud)

当按钮尝试使用该submit方法时,它将获得对自身的引用(以及尝试调用它时的错误消息,因为该按钮不是函数).