2011-04-20 96 views
1

警報jQuery中點擊也不會停止提交

<input onclick="__doPostBack"> 

$(function(){ 
    $('input').click(function(){ alert('hey') }) 
}); 

在Chrome瀏覽器的例子,我看到警覺,當點擊「確定」,瀏覽器提交。 在FF4中,我看到一個milisec警報,並且瀏覽器提交,沒有等我點擊「確定」。

問題:發生了什麼? FF4有新的異步事件?

那不僅是alert的問題,preventDefault也不工作。

回答

1

我沒有測試這個,但我認爲它可能工作。

$('input').unbind('click').click(function{ 
    alert('Hey.'); 
    __doPostBack(); 
}); 
1

嗯,我們從來沒有真的要依靠像alert()comfirm()事件真正停止代碼執行,它只是碰巧,大多數瀏覽器在做這種方式。

這就是說,我不知道爲什麼這會發生在FF4中,但我的猜測是表單的提交事件實際上是在按鈕的單擊事件之前發生的。要試用它,請在表單的提交事件上發出警報,看看是否停止提交。

$('input').closest('form').submit(function() { 
    alert('Hey'); 
}); 
1

Firefox 4現在在頁面對話框中使用;這減少了以前版本中模態對話的煩惱。我認爲這是一個HTML/JavaScript的東西,而不是基於操作系統的GUI。如果你不希望表單提交;您可以掛鉤到表單的提交事件並返回false。事實上,連接到表單的提交功能可能是您的最佳選擇。希望有所幫助!

0

FF中的警報框現在爲tab-modal,這意味着它們僅阻止當前頁面上的訪問(並凍結執行),而不是整個瀏覽器。顯然,這不會阻止加載不同的頁面。

即使這是行爲的重大變化,它可以說是有道理的。

根據您的情況,您可以使用onbeforeunload event向用戶顯示消息。但是,該對話框始終具有「確定」和「取消」按鈕。

相關問題