2012-10-24 73 views
1

我做了一些jQuery代碼,以防止用戶鍵入字符,但只有數字:的jQuery()方法被解僱超過一次

 $("div").on("keydown", ":text", checkKey); 

    function checkKey(e) { 
    var n = e.keyCode; 
    if (n == 13) { 
     $(this).closest("form").submit(); 
     console.log('enter'); 
    } 
    else if (e.shiftKey || e.ctrlKey || e.altKey) { 
     e.preventDefault(); 
    } else { 
     if (!((n == 8) 
       || (n == 46) || (n == 9) 
       || (n >= 35 && n <= 40) 
       || (n >= 48 && n <= 57) 
       || (n >= 96 && n <= 105)) 
     ) { 
      e.preventDefault(); 
      console.log('ok'); 
     } 
    } 
} 

結束HTML:

<div> 
    <input type="text" id="test" /> 
</div> 

但每當我鍵入一些東西,似乎它被解僱了三次,例如一次按下輸入,我在控制檯中得到三個「輸入」,對於數字,我得到三個「確定」,爲什麼?我也用代表代替了它,並且活得很好,但代表也被解僱了三次。謝謝。

+1

您可以包括代碼'$( 「格」)上( 「的keydown」, 「:文本」,checkKey);'出現在。我想這是這行是運行3次,而不是你的checkKey函數內的問題 – wheresrhys

+0

我在一個空行項目中用少量行代碼來做這個代碼。這幾乎都是。 – ePezhman

+0

你使用的是什麼版本的jQuery? – pete

回答

0

是不是你在三個div中輸入#test?我認爲你可以在.on()中有錯誤的選擇器。嘗試使用類似的東西:

$("div").on("keydown", "input#test", checkKey); 

反正貼全身請