繁体   English   中英

通过javascript onkeypress问题在文本框中仅输入数字

[英]Enter only number in text box by javascript onkeypress problem

我有一个 html 文本框, onkeypress事件将调用一个函数,该函数只允许输入数字 (0-9)。 当用户直接输入时,这工作正常。

当用户将某些字符或字符串复制并粘贴到文本框中时,问题就会出现。 我不知道什么时候应该调用该 JavaScript 函数来验证粘贴的值是数字还是字符。

任何的想法?

也许您可以尝试使用 onchange 事件,然后使用正则表达式检查..

您可以使用新的 HTML5 表单标签之一,如<input type=number" \\><input type="range" />

您是否考虑过不在此处编写自己的脚本?

我确实使用了jQuery MaskedInput ,它非常适合这个

$("#textbox").change(function(){
    //validate the text here
});

我怀疑这是因为您对每个非数字输入都返回 false。

您可以研究如何识别诸如 Ctrl+C 之类的东西,也可以切换到黑名单方法。 您真的只想禁止非数字可打印字符,因此您可以使用代码点范围来执行此操作。

如果您使用普通的 Javascript,请使用object.onpaste = handler; 例如

<html>...
    <input id="something" type="text" />
...
  <script>
    var el = document.getElementById('something');
    el.onpaste = function() {
       // do you stuff here
    } ...

使用onchange可能更好

使用像 jQuery 这样的库来为你做这件事很好。

但如果你想学习 JavaScript 的内部结构......自己动手吧! 有时在学习时重新发明轮子会更好。

另一种方法是使用setInterval为表单字段创建您自己的(伪)更改侦听器。 有关示例,请参阅此 jsfiddle

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM