我已经编写了一些仅接受文本框中的数字输入的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