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

时间:2011-07-28 08:43:17

标签: javascript string validation javascript-events numbers

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

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

有什么想法吗?

7 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:2)

您可以使用其中一个新的HTML5表单标记,<input type=number" \><input type="range" />

答案 2 :(得分:1)

您认为这里没有编写自己的脚本吗?

我确实使用jQuery MaskedInput,它适用于此

答案 3 :(得分:0)

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

答案 4 :(得分:0)

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

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

答案 5 :(得分:0)

如果您使用的是普通的Javascript,请使用object.onpaste = handler; e.g。

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

使用onchange

可能更好

使用像jQuery这样的库为你做这件事很不错。

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

答案 6 :(得分:0)

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