Как создать собственное событие в jquery - PullRequest
0 голосов
/ 05 марта 2012

Я хочу создать пользовательское событие, которое будет запускаться всякий раз, когда числовое значение вводится во вход type="text".Алфавиты следует игнорировать.События change и blur не сработали для меня.

Есть предложения?Спасибо.

Ответы [ 6 ]

2 голосов
/ 05 марта 2012

Вы можете легко создавать собственные события:

// handle event
$('#mydiv').on('customevent', function(e) { });

// trigger event
$('#mydiv').trigger('customevent');
1 голос
/ 05 марта 2012

Вы все еще можете использовать события change или blur, но добавьте дополнительную логику, чтобы определить, является ли ваш ввод чем-то, с чем вы хотите инициировать событие, так что

$(".field").on("change blur keydown keyup", function(){
    if($(this).val().match(/^\d+$/){
      //your code
    } else {
      //do nothing
    }

});
1 голос
/ 05 марта 2012
$( '#input-id' ).keyup(function(e)
    {
        if (e.keyCode >= 48 && e.keyCode <= 57 )
        {
            doThis();
        }
    });
1 голос
/ 05 марта 2012

Вы ищете событие keydown, keypress или keyup для захвата ввода и отклонения нецифрового ввода.

Из этих трех опций для целочисленного ввода keypress событие очень подходящее.

$('input#selector').keypress(function(event) {
    if (e.which < 48 || e.which > 57) { // or:
  //if (!/\d/.test(String.fromCharCode(e.which))) {
        event.preventDefault();
    }
});

Однако вам также следует использовать blur / change, чтобы справиться с вводом при копировании / перетаскивании.

0 голосов
/ 05 марта 2012

хорошее искусство здесь .. http://javascript.mfields.org/2011/creating-custom-events-with-jquery/ но я не могу думать, что это нужно. Вы можете использовать keydown, keypress или keyup, как предложено Робом.

0 голосов
/ 05 марта 2012

Я думаю, это поможет вам ..

Буквенно-цифровая демоверсия

...