0

在 Rails 3 的链接中使用 data-confirm 标记会生成通畅的 Javascript,需要有确认警报。例如:

<%= link_to "Destroy", @product, :confirm => "Are you sure?", :method => :delete %>

但是,我想将此行为更改为以下内容:

单击按钮会将其文本更改为“确定?” 然后用户必须再次单击它才能执行操作。(也许超时后文本甚至可以恢复正常)

在 Rails 3.1 应用程序中更改此行为的最佳位置在哪里?(顺便说一句,我正在使用 Twitter Bootstrap,以防有更好的解决方案可以很好地工作)。

4

1 回答 1

0

所以这就是你的做法(这是基于自定义 rails 确认框(使用 $.rails.confirm 覆盖)

如果您愿意,这可以在您的 application.js 中使用(Rails 3.1)

$.rails.confirm = function(message, element) 
{ 
    var state = element.data('state');
    var txt = element.text();
    if (!state)
    {
        element.data('state', 'last');
        element.text('Sure?');
        setTimeout(function()
        {
            element.data('state', null);
            element.text(txt);
        }, 2000);
        return false;
    }   
    else
    {
        return true;
    }
};

$.rails.allowAction = function(element) 
{
    var message = element.data('confirm'),
        answer = false, callback;
    if (!message) { return true; }

    if ($.rails.fire(element, 'confirm')) 
    {
        // le extension.
        answer = $.rails.confirm(message, element);
        callback = $.rails.fire(element, 'confirm:complete', [answer]);
    }
    return answer && callback;
};

$.rails.handleLink = function(link) 
{
    if (link.data('remote') !== undefined) 
    {
        $.rails.handleRemote(link);
    } 
    else if (link.data('method')) 
    {
        $.rails.handleMethod(link);
    }

    return false;
};
于 2012-05-04T11:53:32.113 回答