#javascript #jquery #events #jqwidget
#javascript #jquery #Мероприятия #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>
Ответ №1:
Попробуйте это, 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. это неплохо, но теперь событие будет срабатывать каждый раз, когда пользователь покидает поле ввода.
2. @MattJacobsen Я обновил jsfiddle. Теперь он сработает, если пользователь оставит ввод с некоторым значением.
Ответ №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 входных тегов.