Как запретить отправке формы вызывать `button: first.onclick ()`? - PullRequest
3 голосов
/ 04 августа 2011

Каждый раз, когда я отправляю форму, нажимая , введите , срабатывает функция click() первого <button> в связанной форме. Проблема (кроме того факта, что я нахожу это поведение странным) состоит в том, что оно буквально является событием click, неотличимым от фактического нажатия на кнопку. Если бы это сработало даже на моей кнопке submit , я бы с этим справился.

Проблема в том, что в этом случае первая кнопка не имеет ничего общего с реальной формой, она фактически находится в скрытом всплывающем окне.

Итак, точный вопрос: почему это происходит? Как мне это предотвратить? Как я могу отличить это событие "поддельный щелчок" от реального?

(это очень упрощенный пример; реальный код использует jQuery (в случае, если jQuery подтверждает это и есть исправление), но реальная проблема не имеет ничего общего с jQuery)

<form>
    <input>
    <button onclick="alert('button A click');">Button A</button>
    <button onclick="alert('button B click');">Button B</button>
    <input type="submit" value="Submit Button">
</form>

http://jsfiddle.net/NexHC/2/

Пожалуйста, без предложений "переместить кнопку"

Ответы [ 2 ]

6 голосов
/ 04 августа 2011

-snip-

Редактировать

<form>
    <input>
    <button type="button" onclick="alert('button A click');">Button A</button>
    <button type="button" onclick="alert('button A click');">Button B</button>
    <input type="submit" onclick="alert('button Submit click');" value="Submit Button">
</form>

На самом деле я забираю это ... причина гораздо более конкретна и проста, чем эта. Submit - тип по умолчанию для <button>, как указано в w3c. Поэтому, оставляя кнопку type атрибуты пустой в вашей форме, вы делали три кнопки отправки, и она выбирала первую, когда вы нажимали enter (очень нравится стиль <kbd> на этом сайте: P) , См. здесь для информации о w3c и здесь для обновленной скрипки

0 голосов
/ 04 августа 2011

Мой совет: если <button> не имеет ничего общего с формой, а также управляет скрытым всплывающим окном, выведите его из контекста <form> и поместите в другое место.Это также решит проблему с кликами.

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