2017-08-21 52 views
1

嗨我試圖用這個代碼來限制用戶的輸入。問題是我無法使用我的返回鍵或輸入框中的鍵盤輸入。我該如何解決我的問題。 進出口使用此代碼:jQuery只允許選定的字符按鍵功能

$("input").keypress(function(e) { 
    var chr = String.fromCharCode(e.which); 
    if ("bcdegkmnqupvxy36789".indexOf(chr) < 0) 
     return false; 
}); 
+0

能否請您澄清這個問題?你想使用輸入密鑰專門爲此? (e){if(e.which === 13)stuff(); ''可能會有所幫助。 –

+0

看看這個https://stackoverflow.com/questions/8669268/limit-number-of-characters-in-input-field – mahi

+0

那麼鼠標輸入,..例如。點擊右鍵粘貼? – Keith

回答

2

爲了達到你所需要的,你可以簡單地添加另一個條件的if聲明,檢查回車鍵碼:13

$("input").keypress(function(e) { 
 
    var chr = String.fromCharCode(e.which); 
 
    if ("bcdegkmnqupvxy36789".indexOf(chr) < 0 && e.which != 13) 
 
    return false; 
 
    
 
    console.log('allowed'); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<input type="text" name="foo" />

+0

現在選項卡壞了...... – Adam

+1

您沒有提到問題中的選項卡,但這是鍵碼「9」。你需要在if語句中添加(以及其他任何你想要啓用的鍵) –

+0

我正在指出,手動輸入所有允許的鍵(如tab,shift,backspace)是一種糟糕的做法它。您只希望在用戶敲擊具有附加字符的鍵時防止發生默認設置。 – Adam

0

只需更新您的條件以允許e.which === 13(這是Enter鍵),如下所示:

$("input").keypress(function(e) { 
 
    var chr = String.fromCharCode(e.which); 
 
    if ("bcdegkmnqupvxy36789".indexOf(chr) < 0 && e.which !== 13) { 
 
     return false; 
 
    } 
 

 
    console.log(e.which, chr, 'allowed'); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<input />

0

你只是想限制輸入,如果用戶輸入一個字符,而不是打鑰匙進入非文字之一(如標籤,回報/輸入)。

所以檢查,看看是否chr是不假-Y(例如,一個空字符串)第一名:

$("input").keypress(function(e) { 
    var chr = String.fromCharCode(e.which); 
    //if chr is a non-character keycode (like 13) then you won't return false 
    if (chr && "bcdegkmnqupvxy36789".indexOf(chr) < 0) 
     return false; 
}); 
0
$("input").keypress(function(e) { 
var chr = String.fromCharCode(e.which); 
if ("bcdegkmnqupvxy36789".indexOf(chr) < 0 && e.which !=13 && e.which !=8) 
    return false; 
});