我有一个LinkButton
,我使用OnClientClick
属性询问用户是否真的想要执行操作,例如:
<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 :(得分:7)
行为的原因是另一条javascript,其中链接(按钮)的click事件的处理程序是通过jquery注册的,例如类似的东西:
<script>
$(document).ready(function() {
$('a').click(function() {
// ...
return (someCondition == true);
});
});
</script>
似乎这个click-handler在OnClientClick
注册的那个之后被调用,当这个返回true
时,就发生了回发,与第一个click-handler的结果无关(确认对话框)。
答案 1 :(得分:0)
这对我有用。
<asp:LinkButton runat="server" OnClientClick="return (!confirmDelete()){return false;}" />
<强>的Javascript 强>
function confirmDelete(){
if(something == true){
return true;
}
else{
return false;
}
}