<input type="text" name="RangeText" id="rangeNum" onkeypress = "printValidation(event)" />
我试图在上述打印选择文本框中仅允许特定页面范围内的按键事件上的字符。我可以使用正则表达式轻松完成此操作,但希望用户只键入有效的sccenarios!
我想要达到的目的如下例所示:
1允许
1-2允许
-2不允许
1,2-3,4,5-7允许
1 2,3不允许
1-2-2不允许
这是我目前的功能看起来如何,棘手的部分似乎不允许负数开头但允许连字符在范围内!
function printValidation(evt) {
var charCode = (evt.which) ? evt.which : evt.keyCode;
if (!evt.shiftKey && !evt.altKey && !evt.ctrlKey && charCode >= 48 && charCode <= 57 || charCode == 188 || charCode == 109) {
alert("character accepted");
return true;
}else {
alert("illegal character detected");
return false;
}
}
是否有可能在没有regex方式的情况下实现这一目标?
答案 0 :(得分:0)
我建议你允许用户只输入你正在做的有效字符(包括连字符,逗号和空格)并在结尾处运行正则表达式(当你提交或失去字段的焦点时)。
或者你可以用很多if
填充你的函数来测试所有的可能性,例如。只允许在另一个不是连字符,逗号或空格等字符后使用连字符。您可以使用evt.currentTarget.value
读取该字段的内容。希望有所帮助:)