有没有一种方法可以在type =“ number”输入字段中捕获字母?

时间:2019-11-06 00:51:08

标签: html input text types numbers

我有这个输入字段:

<input type="number" class="col-sm-12" id="scanner" autofocus>

现在,您可以扫描其中的任何内容,并且如果扫描的数据除数字之外还包含其他任何内容,它将剥离它们。 这是针对Android webView移动应用程序的,当此扫描仪具有焦点时,我们只希望显示数字键盘,这就是其“数字”类型的原因。

任何人都知道即使输入字段的类型为“数字”而不将其更改回type =“ text”,我也可以捕获字母吗?

2 个答案:

答案 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来测试您的方法。