2012-03-05 258 views
0

我想創建一個自定義事件,只要在輸入type="text"中輸入一個數字值就會觸發該事件。字母應該被忽略。 changeblur事件並不適合我。如何在jQuery中創建自定義事件

有什麼建議嗎?謝謝。

+0

你試過.keyup()或.keypress()嗎? – 2012-03-05 12:34:51

回答

1

您可能仍然能夠使用changeblur事件,但插入一些額外的邏輯來檢測如果輸入的東西,你會想用觸發一個事件,所以

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

}); 
1

您正在尋找一個​​,keypresskeyup事件來捕獲輸入,並拒絕非數字輸入。

在這三個選項中,對於整數輸入,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,按鍵或按照Rob的建議。

2

您可以輕鬆地創建自定義事件:

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

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