2011-07-25 34 views
7

我有一個LinkButton,我使用OnClientClick財產問他是否真的要執行的操作的用戶,如:爲什麼不從的OnClientClick返回false取消回發

<script> 
function confirmDelete() { 
    return confirm('Do you really want to delete?'); 
} 
</script> 

<asp:LinkButton runat="server" OnClientClick="return confirmDelete()" ... /> 

這種模式通常工作,但在這個特定的頁面上,它沒有。無論我是否在確認對話框中單擊確定或取消,都會執行回發。


只是爲了完整(回答pst的問題):呈現的HTML是確定的。例如。它看起來像這樣:

<a id="ctl00_c1_content_btnDelete" onclick="return confirmDelete();" 
href="javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(..))" 
... > 
    Delete 
</a> 
+0

產生的生成的HTML是......? – 2011-07-25 05:44:22

+0

@pst:HTML是確定的。看到我的答案在下面 - 我剛剛發佈了這可能會有同樣的問題的其他人。 – M4N

+0

接受它;-) – 2011-07-25 23:38:54

回答

7

的原因行爲是另一塊的JavaScript,其中的鏈接(按鈕)的點擊事件的處理程序是通過jQuery註冊,例如中類似這樣的內容:

<script> 
$(document).ready(function() { 
    $('a').click(function() { 
    // ... 
    return (someCondition == true); 
    }); 
}); 
</script> 

看來這單擊處理程序是由OnClientClick註冊了一個稱爲後,當這一個返回true,然後發生了回傳,獨立第一次點擊處理程序的結果(確認對話框)。

0

這是爲我工作的東西。

<asp:LinkButton runat="server" OnClientClick="return (!confirmDelete()){return false;}" /> 

的Javascript

function confirmDelete(){ 
    if(something == true){ 
    return true; 
    } 
    else{ 
    return false; 
    } 
    }