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" οnclick="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

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值