Ember.js: 如果包含在附加了操作的元素中,则复选框不可点击。

创建于 2014-12-04  ·  4评论  ·  资料来源: emberjs/ember.js

简单的例子,

其中包含 type="checkbox" 的输入标签。 复选框可按预期点击。 现在在包含的 div 上放一个动作,比如说捕捉点击事件……复选框现在是不可点击的。 您可以捕获 'change' 事件并看到它尝试按预期工作,但每次都恢复。 几个小提琴如下:

按预期工作....
http://jsfiddle.net/yp128r1e/

不...
http://jsfiddle.net/yp128r1e/1/

最有用的评论

默认情况下,动作助手会阻止默认动作。 在这种情况下,这意味着复选框不会触发。 您可以通过在助手上设置preventsDefault=false来覆盖它。 见http://jsfiddle.net/yp128r1e/3/。

所有4条评论

@hilem这实际上并不是所有事件类型的问题。 它似乎特别是点击问题。 我怀疑 Ember 阻止了浏览器认为复选框不应更改状态的默认事件行为。 我不相信这是一个错误。 如果您还想处理诸如复选框之类的其他事情,解决方案是不要以这种方式应用操作处理程序。

@wagenet这是一种非常常见的设计模式。 能够单击一行中的任意位置来选择一行,而不仅仅是该行的复选框。 添加复选框纯粹是为了强调它是可选的,并且出于可访问性的原因,您告诉我的是,处理它的唯一方法基本上不是使用复选框,而是使用图像或其他方式伪造复选框。 因为没有其他方法可以处理这个问题。 这给可访问性测试带来了很多负担,否则会很好。 顺便说一句,这与其他表单元素无关。 我只通过复选框发现了这种行为。 有一件事要说 Ember 需要在这个问题上搁置一段时间,因为它很难处理当前的代码架构方式,但我不明白你怎么能争辩说这不是一个错误。

默认情况下,动作助手会阻止默认动作。 在这种情况下,这意味着复选框不会触发。 您可以通过在助手上设置preventsDefault=false来覆盖它。 见http://jsfiddle.net/yp128r1e/3/。

谢谢@wagenet

此页面是否有帮助?
0 / 5 - 0 等级