Метод данных отменяет подтверждение данных на старых jquery-рельсах

Я поддерживаю старый сайт с Rails 3.2, jquery 1.7, с пользовательским jquery-rails (в gemfile указано, что это 0.2.6 - но в общедоступной папке есть пользовательский, поэтому его можно было обновить)

У меня есть ссылка для удаления (data-method=delete) с подтверждением (data-verify ="Вы уверены, что хотите удалить это?"). Однако даже если я нажму кнопку "Отмена" в поле подтверждения, элемент будет удален. Я предполагаю, что это только начало происходить недавно. Есть идеи, почему это начало происходить и как это исправить?

1 ответ

Так что мне удалось это исправить, взломав jquery.rails.js следующим образом:

/**
 *  confirmation handler
 */
$('a[data-confirm],input[data-confirm]').live('click', function (event) {
    var el = $(this);
    if (el.triggerAndReturn('confirm')) {
        if (!confirm(el.attr('data-confirm'))) {
            event.preventDefault();
            $(event.currentTarget).data('failed-confirm', true);
            return false;
        }
        ...

Таким образом, если пользователь нажимает кнопку "Отмена", он устанавливает данные для ссылки, по которой я могу проверить. Затем в начале обработчика метода данных:

    $('a[data-method]:not([data-remote])').live('click', function (e){
        if($(e.currentTarget).data('failed-confirm')) {
            $(e.currentTarget).data('failed-confirm', false);
            return false;
        }
        ...

Кажется, это работает, но я все еще заинтригован тем, что изменилось...

Другие вопросы по тегам