Используя JQuery, как определить, изменилось ли значение ввода текста, пока поле все еще имеет фокус?

Я заметил до публикации этого вопроса, что ранее были подобные вопросы, размещенные по этой теме, однако пользователь не взаимодействует с текстовым полем с помощью клавиатуры в этом случае, в таком случае привязка текстового поля к действию "вставить" или любому другому замечательному предложению не будет работать в моем случае.

наши пользователи вводят строковое значение, которое сканируется из штрих-кода. То, что мы пытаемся сделать, - это избежать раздражения от того, что пользователей сканера вниз, чтобы перейти к следующему полю после сканирования информацию. Однако у меня возникла проблема с обнаружением изменения значения текстового поля, пока оно все еще имеет фокус.

Это единственная часть головоломки, которую мы упускаем, потому что применить фокус к следующему полю на форме тривиально. Может ли кто-нибудь пролить свет на то, как обнаружить изменение значения текстового поля, когда устройство ввода не является клавиатурой? Я уже пробовал использовать событие change (), но это не так огонь до тех пор, пока поле не имеет фокус.

2 ответов


Вы можете просто слушать keypress событие.

<input type="text" id="target" value="" />

var target = $('#target'),
    val = target.val();

function monitor()
{
    var current_val = $(this).val();
    if (current_val != val) {
        console.log('changed from', val, 'to', current_val);
        val = current_val;
    }
}

target.keypress(monitor);

Ну, всегда есть грубая сила: опросите его с помощью setInterval().