【问题标题】:Rails link_to ignoring e.preventDefault(); from a jQuery call because method: :get is setRails link_to 忽略 e.preventDefault();来自 jQuery 调用,因为设置了 method: :get
【发布时间】:2014-04-20 02:01:00
【问题描述】:

通过实验我了解到以下代码:

        <td><%= link_to 'Notify', '/w/'+w.id+'/notify', method: :get, :class => "btn btn-success notify-btn" %></td>

不管这个 jQuery 是什么都会触发:

  $('.notify-btn').click(function(e){
    e.preventDefault();
    bootbox.confirm("Alert?", function(result){
      if(result === true){
        return true;
      } else {
        return false;
      }
    });
  });

这是由于方法::get。我一个一个地删除了链接的元素并尝试了各种组合。如果有method: :get,它就会触发。

我可以使用 e.stopPropagation 阻止它,但它不会跟随链接根本。即使我单击“确定”,它也只是在页面上无所事事。

如果我摆脱 erb 并像这样使用直接 HTML:

<a href="/w/53531e8a963e6503c60002b2/notify" class="btn btn-success notify-btn" data-method="get">Notify</a>

并且 data-method="get" 在那里,结果相同。如果我删除数据方法,它会弹出警报并阻止点击链接,但即使我确认它也不会真正触发链接。

关于我做错了什么有什么想法吗?

【问题讨论】:

    标签: javascript jquery ruby-on-rails ruby-on-rails-3


    【解决方案1】:
      $('.notify-btn').click(function(e){
        e.preventDefault();
        e.stopPropagation();
        var link = $(this).attr('href')
        bootbox.confirm("Alert?", function(result){
          if(result){
            window.location = link;
            return true;
          } else {
            return false;
          }
        });
      });
    

    我不得不使用一些诡计 - 但上述方法有效。

    奇怪的是,它最终需要 preventDefault 和 stopPropagation 。我尝试了所有可能的组合。

    【讨论】:

      【解决方案2】:

      我在尝试控制是否应该根据某些条件执行 link_to 请求并最终执行以下操作时也遇到了同样的问题

      1. 使用 get 或 post 方法创建 隐藏 link_to 按钮
      2. 创建一个可见的 link_to 按钮
      3. 如果条件为真,当点击可见的link_to按钮时,会触发隐藏的link_to按钮
      4. 如果条件为 false,当点击可见的 link_to 按钮时,只需返回 false 即可完成工作

      例如假设类 .link-to 和 .link-to-with-method

      $('.link-to').click(function(){
        if(condition){
          $('.link-to-get-method').trigger('click');
          return true;
         }else{
          return false;
         }
      });

      【讨论】:

        猜你喜欢
        • 2015-12-12
        • 2015-08-16
        • 1970-01-01
        • 2019-07-02
        • 1970-01-01
        • 2016-05-15
        • 1970-01-01
        • 1970-01-01
        • 2013-08-10
        相关资源
        最近更新 更多