我有这个输入字段:
<input type="number" class="col-sm-12" id="scanner" autofocus>
现在,您可以扫描其中的任何内容,并且如果扫描的数据除数字之外还包含其他任何内容,它将剥离它们。 这是针对Android webView移动应用程序的,当此扫描仪具有焦点时,我们只希望显示数字键盘,这就是其“数字”类型的原因。
任何人都知道即使输入字段的类型为“数字”而不将其更改回type =“ text”,我也可以捕获字母吗?
答案 0 :(得分:2)
否,numbers
字段的input
属性去除了这些值,由于存在隐式regex
应用于{{ 1}}字段。
但是,您可以尝试进行自己的验证并在字母对您有价值的情况下抓住它们。
请参见下文如何实现此目标。
首先,将字段类型属性设置回input
,即
text
使用正则表达式只能从字符串中获取字母:
<input type="text" placeholder="Enter Number"/>
使用正则表达式只能从字符串中获取数字:
/[^a-zA-Z]+/g
应用/\D/g
事件以监视对该字段的输入:
onkeyup
最终的解决方案监视onkeyup="validate(this)
事件,去除字母并仅保留数字。但是,它会捕获onkeyup
中的字母以供以后使用。
var
另请参阅JSFiddle
编辑:
如果您不喜欢字母的出现方式,然后立即从输入中删除它们,则需要监视<script>
function validate(element) {
var letters = element.value.replace(/[^a-zA-Z]+/g, '');
var numbers = element.value.replace(/\D/g,'');
element.value = numbers;
}
</script>
<input type="text" onkeyup="validate(this)" placeholder="Enter Number"/>
事件,并将每个字母/符号与它们的keyCode匹配。
可在此处找到此实现:How to prevent invalid characters from being typed into input fields
JavaScript密钥代码的完整列表可以在这里找到:Javascript Char Codes (Key Codes)
答案 1 :(得分:0)
类型为数字的输入字段允许使用字母e(代表指数)。因此,您应该能够通过输入字母e来测试您的方法。