2010-10-26 51 views
0

給出了一個帶有單個文本字段的表單。提交處理程序綁定在窗體上,綁定在文本字段上的更改/焦點/模糊處理程序。在Firefox中提交Jquery change/focus/blur overrides

當在文本框中輸入內容並點擊提交按鈕時,只有更改/焦點/模糊事件在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中工作?

回答

0

這裏的問題看起來像是由alert造成的。

如果您在沒有alert的情況下運行代碼或將其更改爲console.log,則代碼的行爲與您的預期相同,同時觸發更改和提交事件。

$(function() { 

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

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

既然你再也不想在生產代碼中使用alert,你應該能夠得到想要沒有任何變化的結果。