我有一个html文本框,onkeypress事件将调用一个函数,该函数只允许输入数字(0-9)。当用户直接输入时,这工作正常。
当用户将某些字符或字符串复制并粘贴到文本框中时,问题就出现了。我不知道何时应该调用JavaScript函数来验证粘贴的值是Number还是Char。
有什么想法吗?
答案 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。