Почему $ .change () срабатывает на кнопке отправки? - PullRequest
0 голосов
/ 11 октября 2009

У меня есть событие $.change(), но когда нажата кнопка отправки, событие изменения запускается снова. Он должен срабатывать только один раз, когда текст вводится в текстовое поле ввода.

$('input:submit', top.document).bind('click', function (e) {
    alert("submitting")
});

$('input').change(function (e) {
    alert("fire");
});

Ответы [ 3 ]

4 голосов
/ 11 октября 2009

Редактировать: по какой-либо причине событие изменения вызывается при нажатии кнопки ввода. (спасибо Энтони)

Чтобы это исправить, просто не нажимайте кнопку отправки.

Вы можете попробовать

$('input:text')

Для выбора только текстовых полей.

Или вы можете сделать

$('input:not(:submit)')

Чтобы выбрать все элементы ввода, кроме кнопки отправки.

Подробнее о селекторах читайте здесь

Редактировать: Использование <button> вместо этого не будет работать. Он по-прежнему считается полем input, но его значение отличается от текста, отображаемого на кнопке.

0 голосов
/ 11 октября 2009

@ Марк,

Вы на месте, и я отредактирую вас, если смогу помочь. Может быть, когда-нибудь скоро ...

@ ajowi,

Кнопки отправки являются входами. По крайней мере, большинство из них:

  <input type="submit" />

Итак, Марк, дело не в том, что они что-то делают с текстом кнопки, а в том, что ввод, который является кнопкой, изменяется путем нажатия на нее.

Так что его решения были великолепны. Перейти с

  $("input:text").change
0 голосов
/ 11 октября 2009

$('input').change(function(e){ alert("fire") }); применяет это событие ко ВСЕМ элементам ввода, включая <input type="submit".../>. Если вы действительно хотите, чтобы КАЖДЫЙ ОДИН элемент ввода текста имел событие изменения, вам нужно `` $ ('input [type = text]'). Change (function (e) {alert ("fire")}); `В противном случае, Лучше всего использовать идентификатор или класс.

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