2017-08-08 173 views
0

我有一个输入,我想要使用扫描仪(条形码只包含数字)条形码问题是,也许我想多次扫描条形码,在这种情况下,我希望能够做这样的事情:输入允许数字和只有一个字母/符号

10 *条码编号

现在我能够让我在这个代码仅输入号码:

<input name="number" onkeyup="if (/\D/g.test(this.value)) this.value = this.value.replace(/\D/g,'')"> 

但是在这种情况下,我只能输入数字,我能做些什么来允许在这种情况下键入一个确定的字母/符号:*

换句话说,我想要一个允许数字的正则表达式,只有这个符号“* ”。我试着做这样的事情:

if (/\D/g.test(this.value)) this.value = this.value.replace(/^[0-9*]+$/,'')" 

但是,这只允许字母和符号。

+0

我没有得到你所说的'10 *条码number' –

+0

@RoryMcCrossan好一点的意思,而不是扫描10次条形码,我想允许键入我想要条形码的次数(在本例中为10),并且*知道我需要条形码n次。例如3 * 15000在这种情况下,我想使用15000 3次。 – User1899289003

+0

在这种情况下,我建议你有两个单独的输入。一个为条码本身,另一个为数量 –

回答

0

在这种情况下,您应该处理char验证和输入值。

正则表达式有助于验证最终输入,但为了做得更好,您应该避免所有在keyDown事件中无效的输入。

并验证keyUp的整个输入值。

考虑这个例子:

function onKeyDown(event) { 
 
\t if (event.keyCode >= 48 && event.keyCode <= 57 || event.keyCode == 16 || event.keyCode == 8) 
 
    \t return true; 
 

 
    event.preventDefault(); 
 
    return false; 
 
} 
 

 
function onKeyUp(event) { 
 
\t var value = event.target.value 
 
    if (!value.match(/^[0-9]+\*?[0-9]*$/)) { 
 
    \t event.preventDefault(); 
 
    event.target.value = value.substring(0, value.length-1); 
 
    \t return false; 
 
    } 
 
    return true; 
 
} 
 

 
document.getElementById('inputSource').addEventListener('keydown', onKeyDown); 
 
document.getElementById('inputSource').addEventListener('keyup', onKeyUp);
My input sample: <input type="text" value="" id="inputSource"/>

相关问题