我已經編寫了一些僅接受文本框中的數字輸入的JavaScript和jQuery代碼。 但這還不夠;我需要限制輸入到某些數字。使用JavaScript來僅允許HTML輸入中的特定字符
此文本框需要處理SSN號碼(瑞典SSN),它必須以19或20開頭。我想迫使它以這些數字開始,但我無法設法限制它。
$('input.SSNTB').keydown(function (event) {
var maxNrOfChars = 12;
var ssnNr = $('input.SSNTB').val();
if (event.keyCode == 46 || event.keyCode == 8 || event.keyCode == 9 || event.keyCode == 27 ||
// Allow: Ctrl+A
(event.keyCode == 65 && event.ctrlKey === true) ||
// Allow: home, end, left, right
(event.keyCode >= 35 && event.keyCode <= 39)) {
// let it happen, don't do anything
return;
}
else {
// Ensure that it is a number and stop the keypress
if (((event.keyCode < 48 || event.keyCode > 57) && (event.keyCode < 96 || event.keyCode > 105))) {
console.log("if-1");
event.preventDefault();
}
if (event.shiftKey == true) {
console.log("if-3");
event.preventDefault();
}
//rules to make sure the textbox starts with correct number
if (event.keyCode != 49 || event.keyCode != 50 || event.keyCode != 97 || event.keyCode != 98) {
console.log("if-4, Keycode:" + event.keyCode);
event.preventDefault();
}
}
});
最後一個if-case被執行到測試它。它按計劃執行,但不會限制輸入字符的內置。
任何提示或想法?
你認爲RegEx是否存在這個問題?我相信你會從它得到一個更清潔的代碼... :) – FarligOpptreden
我建議你不要試圖讓你的'keydown'處理程序如此奇特 - 你不能限制在開始的字符該字符串,除非你可以告訴光標在哪裏。只要將其限制爲可以出現在字符串中任何位置的字符,然後使用'change'和/或'blur'處理程序來驗證使用正則表達式的整體格式 - 這也將允許用戶粘貼,剪切或拖動' n'drops(所有這些都可以在不觸發'keydown'的情況下完成)。 – nnnnnn
SSN有9位數字,即使是連字符,字符串也不應超過11個字符。爲什麼maxNrOfChars設置爲12? – Abbas