Rails Rails 3 的 check_box 生成的代码在 IE 11 / Edge 浏览器下的问题

blacktulip · 2016年09月14日 · 最后由 blacktulip 回复于 2016年09月14日 · 1608 次阅读

Rails 3 在使用 check_box helper 的时候会生成两个 input field (其实 Rails 4 也是)

生成两个 input 的原因我知道,但是在 IE 11 / Edge 浏览器中,点击行为会发到第一个 input,也就是 hidden 那个,导致 checkbox 无法改变,表现是鼠标点击没有反应,不会 check/uncheck .

搜了一下没有发现解决方案,倒是有人抱怨同样的问题 http://www.dunkman.me/articles/ie-11-hidden-inputs-in-labels.html

请问有没有遇到过这个问题的朋友?有什么好的解决方案么?谢谢。

BTW: 我知道 check_box helper 里面把 unchecked_value 设成 false 就只生成一个 input , 但是那样如果 uncheck,传回的参数里面就没有这一项,我希望 uncheck 的时候传回值为 0

前端,或者后端检测一下浏览器,然后针对性修复一下?

#1 楼 @lgn21st 谢谢,检测浏览器是可以,但是这个 input 怎么写呢?我也只能想到前面放一个 hidden field ... 这么说来,主要就是一个 checkbox,希望它 checked 的时候传回 1,unchecked 的时候传回 0 如果只用一个 input,那么它 checked 的时候可以传回 1,但是 unchecked 的时候就什么也不传了,我后面用的是 update_attributes,收到 0 和什么都没收到是不一样的。 如果用两个 input,IE 11 和 Edge 就会有问题。

quick and dirty,直接写吧

我用 simple_form 不知道有没有同样的问题

#3 楼 @Peter 现在就是不会写啊,我在想实在没办法的话,检测出 IE / Edge 之后就用 radio button 算了,每个选项都给一个 yes 一个 no。但是这个方案极丑,如果有一线希望我都不想用...

#4 楼 @blacktulip

只能帮到这了,这个 Gem 我在用,很不错: https://github.com/fnando/browser

#5 楼 @Peter 谢谢,这个我已经在用了其实,现在主要是就是 #2 楼 说的问题,一个 input 没法传回 unchecked_value

需要 登录 后方可回复, 如果你还没有账号请 注册新账号