Я не могу себе представить, что проблема заключается в .change()
, возможно, где-то еще в вашем коде, я только что протестировал, и событие будет запущено, если я скопирую и вставлю, или если я наберу какой-то новый текст (как с обычным, так и с экранная клавиатура).
Единственный раз, когда это не срабатывало, это когда я перетаскивал текстовое вырезание с рабочего стола в поле ввода, но это было связано с тем, что оно было выделено и достаточно точно, когда поле ввода потеряло фокус, событие вызвало (я не могу думать ни о каких других случаях использования)
Вы можете сделать что-то, как показано ниже, используя событие blur()
или focusout()
, которое, как я считаю, по сути, является событием change
function foo(e) {
alert(e.type + ' triggered');
}
$('input').blur(function(e) {
$t = $(this);
if ($t.data('oVal') != $t.val()) {
$t.data('oVal', $t.val());
foo(e);
}
})