События запускаются дважды в jqWidgets

Почему это событие запускается дважды?

Обходной путь должен проверить для 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 ответа

Попробуйте следующее:

$('#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 вызывается, а не стандартное событие изменения Javascript тегов INPUT.

Попробуйте это, Jsfiddle

Вместо изменения попробуйте размытие.

var changedCount = 0;
$('#input').on('blur', function(event) {
  console.log("changed");
  console.log(event.args != undefined)
  changedCount++;
  $("#log").html("total times fired: " + changedCount);
});
Другие вопросы по тегам