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, если нет, то не продолжайте запрос.

Спасибо.


person Nicekiwi    schedule 25.09.2012    source источник


Ответы (2)


Как уже упоминалось @Marcin, вы привязываете два события щелчка к одному элементу, поэтому неудивительно, что ваш вызов ajax выполняется как обычно, независимо от результата диалога подтверждения.

Устраните один, не привязывая событие к элементу через атрибут onclick. (Никогда не используйте onclick!)

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

Вот соответствующий jsFiddle, с которым вы можете поиграть.

person Julian H. Lam    schedule 25.09.2012

Вот решение: http://jsfiddle.net/kVjAB/

Некоторые комментарии:

  1. Не используйте больше $$ или $ в Mootools. Они устарели.

  2. В вашем коде вы привязываете click event к ссылке. Кроме того, вы добавили атрибут onClick, который сначала запускает собственный код, а затем ваш связанный код. Это похоже на то, что вы добавляете два отдельных события в ссылку.

person Marcin Wieprzkowicz    schedule 25.09.2012