Определить изменение поля текстового поля jQuery - PullRequest
0 голосов
/ 02 апреля 2012

У меня есть текстовое поле, которое принимает целые числа, и мне нужно, чтобы оно запустило функцию, которая будет использовать ввод текстового поля, как только пользователь введет числа в поле.

Проблема в том, чтоkeyUp() будет обнаруживать каждый вход.Поэтому, если я наберу 23, он сработает один раз для 2 и один раз для 3.Мне нужно, чтобы он работал только после завершения ввода.

Есть ли способ сделать это без потери фокуса и без использования таймера, который будет постоянно проверять ввод текстового поля каждый раз при использовании setInterval?

Ответы [ 3 ]

0 голосов
/ 02 апреля 2012

Почему бы не протестировать содержимое текстового поля после того, как оно было изменено, ведь именно после этого ввод завершен?пользователь должен ввести действительные данные.

Что-то вроде:

$("textbox").change( function () {
    if (someTestForGoodData) {
        handleTheGoodData();
    } else {
        $(this).focus();
        alert($(this) + " has bad data!");
    }
})
0 голосов
/ 15 июля 2013
$('input').on('input propertychange', function() {
    $('#output').html($(this).val().length + ' characters');
});

С это ответ.

0 голосов
/ 02 апреля 2012

Похоже, вы хотите получать уведомления, когда пользователь перестает печатать.Следующий код можно использовать в качестве отправной точки, он вызывает bufferedKeyUp через 300 мс после того, как пользователь перестает печатать.http://jsfiddle.net/mendesjuan/VTMEe/

$(function() {
    // Creates a handler that will wait until the event hasn't fired for a period 
    // before it fires the actual event handler
    function createBuffered(fun, delay) {
        var timer;
        return function() {
            clearTimeout(timer);
            var args = arguments;
            var me = this;
            timer = setTimeout(function() {
               fun.apply(me, args);
            }, delay);        
        }
    }   

    $('#in').keyup( createBuffered(function(){
        console.log('change');
    }, 300));
});​

У Ext-JS есть хороший простой способ сделать это http://jsfiddle.net/mendesjuan/DYkmU/1/

Ext.get('myid').on('keyup', function() {
  console.log('change');
}, null, {buffer: 300});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...