9

我有一个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>
4

2 回答 2

8

该行为的原因是另一段 javascript,其中链接(按钮)的单击事件的处理程序是通过 jquery 注册的,例如类似于以下内容:

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

似乎这个点击处理程序是在注册的之后调用的OnClientClick,当这个返回时true,回发发生,与第一个点击处理程序(确认对话框)的结果无关。

于 2011-07-25T05:47:16.803 回答
1

这是对我有用的东西。

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

Javascript

    function confirmDelete(){
    if(something == true){
    return true;
    }
    else{
    return false;
    }
    }
于 2016-10-31T05:49:16.670 回答