在使用Javascript时,我对前端的产品编号进行了限制。
产品编号应为xxxxx
5位数字或xxx-xxx
样式6位数。
我计划将每个按键的非正确文本字符替换为“”
并在此前面调用onkeypress = "checkonlynumdash();"
对于该函数,我的代码如下所示。
function checkonlynumdash() {
e = window.event;
var keypress = String.fromCharCode(e.keycode);
var numdashkey = "";
numdashkey = /^[-]|[^0-9-]/;
return numkey.test(keypress);
}
在使用window.event时,我试图控制实时按键,但它 似乎不适合替换。希望有人能指出缺失的部分。
答案 0 :(得分:1)
我看到两个问题:
e.keycode
我会改为
e.charCode
并使用另一个正则表达式:/[\d-]/
,它更简单。
结果可能是:
function checkonlynumdash() {
e = window.event;
var keypress = String.fromCharCode(e.charCode);
var numdashkey = /[\d-]/;
return numdashkey.test(keypress);
}
此外,我无法理解您的原始正则表达式:/^[-]|[^0-9-]/
符号^
表示字符串开头的''或者'不是'。
答案 1 :(得分:-1)
你可以尝试Simple Mask,它是jQuery插件,可以在输入字段上制作掩码。 用法:
$('input').simpleMask({
'mask': ['####-####','#####-####']
});