2010-10-26 10 views
0

Дана форма с одним текстовым полем. Обработчик отправки привязан к форме, а обработчик изменения/фокусировки/размытия привязан к текстовому полю.JQuery change/focus/blur overrides submit in Firefox

Когда что-то вводится в текстовое поле, а затем нажата кнопка отправки, в Firefox регистрируется только событие change/focus/blur, в то время как в 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?

ответ

0

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

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

$(function() { 

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

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

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