使用iCheck - 在手机上调用两次事件

时间:2015-02-11 12:01:23

标签: angularjs events checkbox icheck

我的一个AngularJS应用程序中有一个奇怪的问题。该应用程序使用iCheck来设置样式复选框,问题是:当通过单击其标签,在移动电话上(或移动模拟器)选择复选框时,与复选框关联的事件是两次开除。

我已经创建了一个JSFiddle,您可以自己重现该问题:https://jsfiddle.net/o6oewfff/22/

 <input data-icheck data-ng-model="product.selected" id="{{product.id}}" type="checkbox" data-ng-change="callAnEvent()" />

首先,看看它应该如何运作:

  1. 在浏览器中打开JSFiddle
  2. 打开开发人员工具栏中的javascript控制台
  3. 通过单击标签选择其中一个复选框,您将在控制台日志中看到三个日志项:应用名为的事件和更新
  4. 现在,让我们重现我试图解决的问题:

    1. 在移动模拟器中打开JSFiddle(例如尝试iPhone 6)
    2. 打开开发人员工具栏中的javascript控制台
    3. 选择其中一个复选框,点击标签,您将在控制台日志中看到五个日志项:应用名为的事件,更新名为的事件和更新
    4. 屏幕截图:http://i.stack.imgur.com/7j03S.png

      正如您所看到的,正在记录事件的事件被称为&#39;并且&#39;更新&#39;使用移动设备时,控制台会被触发两次。此外,未选中该复选框。有人能弄清楚为什么会这样吗?

      谢谢!

1 个答案:

答案 0 :(得分:0)

试试这个https://jsfiddle.net/scdmuout/

我在下面添加了以阻止它在触摸时触发并单击

event.preventDefault();
event.stopPropagation();