`
taito
  • 浏览: 94495 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

IE7下, Rails link_to 生成的Confirm失效问题

阅读更多

link_to 有个 method 属性,经常用来配合 :confirm 属性做删除链接的确认。

 

 

<%= link_to ' Delete', { :action => 'destroy'}, :confirm => "Delete this?", :method => :delete %> 

 

 

 

其实就是在链接的 onclick 中创建了一个临时表单,提交请求,最后 return false,这样链接本身就不会被触发。

  

<a href="/uiok/3" onclick="if (confirm('确认吗')) {...};return false;">删除</a>

  

不过发现,在IE7下生成的链接,如果点击否的话,return false 并没有效果,不仅onclick中的表单提交,链接也触发了 。

那么为什么原来没有发现这个问题呢 ? 因为 Rails 生成的控制器代码中都会有这么一句:

 

verify :method => :post, :only => [ :destroy, :create, :update ],:redirect_to => { :action => :list }

 

  

问题就在于 IE 忽略了 return false

==================================

 

解决方法

 

修改生成这个脚本的原始类,具体的路径根据你自己安装rails 的路径而定,找到url_helper.rb,增加红色标注部分:

 

module ActionView
 module Helpers
  module UrlHelper
   private
   def convert_options_to_javascript!(html_options, url = '')
    ...
    when confirm && popup
      "... ;event.returnValue = false; return false;"
    when confirm && method
      "... ;event.returnValue = false; return false;"
    ...
    when method
      "... return false;event.returnValue = false"
    when popup
      ... + return false;event.returnValue = false''
    ...   
  end
 end
end

 

 

 

 

 

原文: 

 

http://galeki.is-programmer.com/2008/5/5/return-false-does-not-work-in-IE.2794.html

 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics