2016-10-14 3 views
1

Почему это событие срабатывает дважды?события, дважды стреляющие в 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>

ответ

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); 
}); 
+0

это неплохо, но теперь событие будет срабатывать каждый раз, когда пользователь покидает поле ввода. –

+0

@MattJacobsen Я обновил jsfiddle. Теперь он срабатывает, если пользователь оставляет ввод с некоторым значением. –

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 поднимается, а не стандартное изменение событий Javascript входных тегов.

Смежные вопросы