事件在jqWidgets中触发两次

时间:2016-10-14 08:43:56

标签: javascript jquery events jqwidget

为什么这个事件会发射两次?

解决方法是检查event.args,但事件仍然会触发两次。

$('#input').jqxInput({
  width: 200,
  height: 25
});

var changedCount = 0;
$('#input').on('change', function(event) {
  console.log("changed");
  console.log(event.args != undefined)
  changedCount++;
  $("#log").html("total times fired: " + changedCount);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<link href="http://jqwidgets.com/public/jqwidgets/styles/jqx.base.css" rel="stylesheet" />
<script src="http://jqwidgets.com/public/jqwidgets/jqx-all.js"></script>

<input id="input">
<div id='log'></div>

2 个答案:

答案 0 :(得分:0)

试试这个, Jsfiddle

而不是更改尝试模糊

var changedCount = 0;
$('#input').on('blur', function(event) {
  console.log("changed");
  console.log(event.args != undefined)
  changedCount++;
  $("#log").html("total times fired: " + changedCount);
});

答案 1 :(得分:0)

尝试以下方法:

$('#input').on('change', function(event) {
  if (!event.args) return;

  console.log("changed");
  console.log(event.args != undefined)
  changedCount++;
  $("#log").html("total times fired: " + changedCount);
});

这样做可以确保引发jQWidgets自定义事件,而不是INPUT标记的标准Javascript更改事件。