2015-04-26 38 views
0

我有幾個文本框只需要接受少於5的數字。 當用戶輸入一個數字時,需要發生一些其他事件。 Keypress事件工作得很好,除了當用戶進入文本框1時,事件被觸發一次(這是正確的),並且當他經常進入文本框2時,事件被觸發兩次(這是否正確?) - 一次爲文本框1,另一次爲文本框2.如果他退後一步,並輸入第三個數字,該事件將被觸發三次。jquery按鍵級聯

我是jquery的新手,所以請原諒我,如果我缺少一些簡單的東西。我原以爲每次按鍵都會觸發一次,但它好像保留了以前的按鍵。

function validateInputKeyPress(e){ 

var element = document.getElementById(e.name); 

$("body").keypress(function(e) { 
    var keycode= e.keyCode; 
    alert(e.name); // this tells me which textbox 
    if (keycode!=8){ //allow backspace 
     if (keycode<49||keycode>53) { //if not a number less than 6 
      return false; //disable key press 
     } 
    } 
    handleQtyChange(e.name, keycode); 
}); 

}

回答

0

你已經綁定在body事件。你應該在輸入上綁定事件。 您可以使用stopPropagation來停止事件冒泡。

$("body").on('keypress', ':text', function(e) { 
    e.stopPropagation(); 

這將綁定事件只在文本框,而不是body

參考:https://api.jquery.com/on/

+0

對我來說情景看起來不一樣。他說事件觸發的數量取決於文本框中的字符數量而不是祖先的數量,如果我錯了,請糾正我。 – Imad