2011-07-25 40 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; 
    } 
    }