События запускаются дважды в 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);
});