Почему присвоение имени кнопке отправки вашей HTML-формы “отправить” что-то нарушает?

StackOverflow https://stackoverflow.com/questions/876243

Вопрос

В 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>
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top