Почему название вашей кнопки отправки HTML-формы «отправить» ломает вещи? - PullRequest
4 голосов
/ 18 мая 2009

В веб-формах ASP.NET и ASP 3 (Classic 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 / Browser какие-либо причины, по которым установка id = "submit" для кнопки "Отправить" может вызвать проблемы? EDIT

this SO comment , похоже, предполагает, что "submit" является зарезервированным ключевым словом. Но почему атрибуты "id" или "name" мешают этому? И как это «зарезервированное» ключевое слово может быть реализовано таким образом, чтобы вызвать конфликты?

еще раз спасибо

Ответы [ 4 ]

15 голосов
/ 18 мая 2009

Элемент form имеет метод с именем submit, но также имеет элементы формы в виде элементов.

Если у вас есть кнопка в форме с именем submit, вы можете получить к ней доступ, используя document.form1.submit. Однако, поскольку это то же имя, что и у метода submit, больше нет никакого доступа к этому методу. Если вы используете метод для отправки формы, это больше не будет работать.

Например, если у вас есть кнопка, которая отправляет форму с использованием Javascript, это не работает:

<input type="button" name="submit" onclick="this.form.submit();" value="try" />

Когда кнопка пытается использовать метод submit, она вместо этого получает ссылку на себя (и сообщение об ошибке при попытке вызвать ее, поскольку кнопка не является функцией).

2 голосов
/ 18 мая 2009

Я призываю вас держаться подальше от всех зарезервированных слов в DOM javascript. используйте «my» перед всем, что вы определяете, или $, или что-то еще, что явно не будет конфликтовать с зарезервированными словами, которые вы можете случайно перегрузить и вызвать хаос.

0 голосов
/ 07 июля 2016

Просто используйте 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>
0 голосов
/ 18 мая 2009

Сгенерированный код, который позволяет связывать события с объектом, именуется на основе указанных вами значений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...