2012-03-05 5 views
0

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

Любые предложения? Благодарю.

+0

Вы пробовали использовать .keyup() или .keypress()? –

ответ

1

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

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

}); 
1

Вы ищете 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, чтобы иметь дело с вводом от копирования вставки/перетаскивания.

1
$('#input-id').keyup(function(e) 
    { 
     if (e.keyCode >= 48 && e.keyCode <= 57) 
     { 
      doThis(); 
     } 
    }); 
0

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

2

Вы можете легко создание специальных событий:

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

// trigger event 
$('#mydiv').trigger('customevent');