Изменение/фокус/размытие Jquery переопределяет отправку в Firefox

Дана форма с одним текстовым полем. Обработчик отправки привязан к форме, а обработчик изменения/фокуса/размытия привязан к текстовому полю.

Когда что-то вводится в текстовое поле и затем нажимается кнопка отправки, в Firefox регистрируется только событие изменения/фокуса/размытия, тогда как в Safari регистрируются оба события.

Форма:

<form id="form1" action="" method="get">
<input id="text1" name="text1" type="text" />
<input id="submit1" name="submit1" type="submit" />
</form>

Код Jquery:

$(document).ready(function(){
 $('#text1').change(function(){ alert("1"); });
 $('#form1').submit(function(){ alert("2"); });
});

В Firefox: "1" предупреждается. В Safari предупреждается «1», затем предупреждается «2».

Как я могу заставить поведение Safari работать в Firefox?


person Timothy    schedule 26.10.2010    source источник


Ответы (1)


Проблема здесь выглядит так, как будто она вызвана ошибкой alert.

Если вы запустите код без alert или измените его на console.log, код будет вести себя так, как вы ожидаете, с запуском событий изменения и отправки.

$(function() {

  $('#text1').change(function() {
    console.log("change");
  });

  $('#form1').submit(function() {
    console.log("submit");
    return false;
  });
});

Поскольку вы никогда не захотите использовать alert в производственном коде, вы сможете получить желаемый результат без каких-либо изменений.

person Karl    schedule 08.03.2011