输入允许数字和只有一个字母/符号
问题描述:
我有一个输入,我想要使用扫描仪(条形码只包含数字)条形码问题是,也许我想多次扫描条形码,在这种情况下,我希望能够做这样的事情:输入允许数字和只有一个字母/符号
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*]+$/,'')"
但是,这只允许字母和符号。
答
在这种情况下,您应该处理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"/>
我没有得到你所说的'10 *条码number' –
@RoryMcCrossan好一点的意思,而不是扫描10次条形码,我想允许键入我想要条形码的次数(在本例中为10),并且*知道我需要条形码n次。例如3 * 15000在这种情况下,我想使用15000 3次。 – User1899289003
在这种情况下,我建议你有两个单独的输入。一个为条码本身,另一个为数量 –