Почему присвоение имени кнопке отправки вашей 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 = "submit" на кнопке отправки вызовет какие-либо проблемы?
Редактировать
это ИТАК, прокомментируйте похоже, предполагается, что "submit" - это зарезервированное ключевое слово.Но почему атрибуты "id" или "name" должны быть связаны с этим?И как это "зарезервированное" ключевое слово реализуется таким образом, чтобы вызвать конфликты?
еще раз спасибо
Решение
В form
элемент имеет метод с именем submit
, но также имеет элементы формы в форме в качестве членов.
Если у вас есть кнопка в форме с именем submit
, вы могли бы получить к нему доступ с помощью document.form1.submit
.Однако, поскольку это то же имя, что и submit
метод, больше нет никакого способа получить доступ к этому методу.Если вы используете этот метод для отправки формы, это больше не будет работать.
Например, если у вас есть кнопка, которая отправляет форму с помощью Javascript, это не сработает:
<input type="button" name="submit" onclick="this.form.submit();" value="try" />
Когда кнопка пытается использовать submit
метод, вместо этого он получит ссылку на самого себя (и сообщение об ошибке при попытке его вызова, поскольку кнопка не является функцией).
Другие советы
Я бы настоятельно рекомендовал вам держаться подальше от всех зарезервированных слов DOM в javascript.используйте "my" перед всем, что вы определяете, или $, или что-то еще, что явно не будет конфликтовать с зарезервированными словами, которые вы можете случайно просто перегрузить и вызвать хаос.
Генерируемый код, позволяющий вам привязывать события к объекту, именуется на основе указанных вами значений.
Просто используйте 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>