在确认弹出窗口中取消javascript的回发

Tim*_*ear 2 javascript asp.net

出现此问题ASP.NET:如果使用onclick,则不会调用OnServerClick事件处理程序

我实施了一个解决方法:

<button id="idBtnPrint" runat="server" type="submit" onserverclick="BtnPrint_Click" onclick="confirmImpression();">print</button>
Run Code Online (Sandbox Code Playgroud)

javascript函数:

    function confirmImpression() {

        if (!confirm("sure ?"))
            arg.whatever;

    }
Run Code Online (Sandbox Code Playgroud)

确认是积极的,当取消回发没有运行时(因为我想要)启动回发只是因为生成错误js"arg未定义"(正常,因为arg不是instanciate)脚本被锁定,因此没有回发(因为我想要)太).

但如何正确地做到这一点.我不会在浏览器的状态栏中看到错误.

欢迎任何建议!

谢谢

小智 11

我遇到了一个与此非常相似的问题,尽管这个问题已经过时了,但我认为我的回答可能有助于未来的人.如果你有一个javascript方法应该返回一些东西并将它放在OnClientClick中,它仍然不会返回方法真正返回的内容.为了解决此问题,您必须在OnClientClick中返回该方法.

OnClientClick="return MethodName()"
Run Code Online (Sandbox Code Playgroud)

您还需要确保您的方法从确认对话框返回正确的true/false.

function MethodName() {
    if (!confirm('Are you sure you want to X?')){
         return false;
    }
    else{
         return true;
    }
}
Run Code Online (Sandbox Code Playgroud)


tva*_*son 9

只需将确认包装在if块中,如果确认失败则返回false.生成回发的标准javascript将附加到检查中,因此如果确认操作则运行.

<button id="idBtnPrint" runat="server" type="submit"
        onserverclick="BtnPrint_Click"
        onclientclick="if (!confirm('sure ?')) { return false; }">print</button>
Run Code Online (Sandbox Code Playgroud)

arg未定义的原因是您不将其用作参数,也不在窗口对象中定义.我假设您正在尝试挂钩验证系统,但在这种情况下它不起作用,因为验证逻辑没有被调用.如果用户以否定方式回答,您只想停止执行客户端处理程序,上面的代码将执行此操作.

虽然引用问题中的答案也会起作用,但我更喜欢使用完整的javascript语句来帮助理解正在发生的事情.