Mootools确认对话框,如果取消,将停止ajax函数



我在某些链接上设置了一个JavaScript弹出窗口"确认对话",当单击链接时,它说"你确定吗?"并让你确认或取消,但是无论您选择什么,ajax调用都将起作用。

<a onclick="return confirm('Are you sure?')" class="sendEmailLink" href="/" id="someID">Send</a>

调用的函数按如下方式启动:

$$('.sendEmailLink').addEvent('click', function(e)
{
    e.stop();
    (I assume something should go here)
    var myRequest = new Request.JSON({
    etc... 

确认对话框不会停止上述代码是有道理的,但我无法弄清楚如何在 mootools 中完成此操作。帮助?

我需要一个对话框,提供是或否的选择,如果是,则继续ajax请求,如果不是,则不要继续请求。

谢谢。

就像@Marcin提到的,您将两个单击事件绑定到一个元素,因此无论确认对话框的结果如何,您的 ajax 调用都会照常进行也就不足为奇了。

通过不通过 onclick 属性将事件绑定到元素来消除一个。(切勿使用onclick

element.addEvent('click', function() {
    if (confirm('Are you sure?')) {
        new Request.JSON({
            // ...
        }).send();
    } else {
        // Do nothing
    }
});

这里有一个相关的jsFiddle供您使用。

这是解决方案: http://jsfiddle.net/kVjAB/

一些评论:

  1. 不要再在 Mootools 中使用 $$ 或 $。它们已弃用。

  2. 在代码中,您将click event绑定到链接。此外,您还添加了属性onClick它将首先运行自身代码,然后运行绑定的代码。这就像您添加两个单独的事件来链接一样。

最新更新