2010-07-15 151 views
2

我正在使用此功能只允许在文本输入中的数字。只允许使用JavaScript输入数字并允许复制和粘贴?

$('input').bind('keydown', function(e) { 

    var key = e.charCode || e.keyCode || 0; 

    return (
     key == 8 || 
     key == 9 || 
     key == 46 || 
     (key >= 37 && key <= 40) || 
     (key >= 48 && key <= 57) || 
     (key >= 96 && key <= 105)); 
}); 

我该如何复制和粘贴?我已经尝试添加控制键码17,但它仍然不起作用。

对于组合键有什么特别的要求吗?

谢谢

+0

是不是第一行是一个jQuery选择器?这不应该至少有一个jQuery标签吗? – Adam 2010-07-15 16:27:05

+0

或者是为jQuery特有的问题保留的标记? (只是好奇) – Adam 2010-07-15 16:28:28

+0

@ advs89再想一想(不要懒得读完整的问题不只是第一行......) – galambalazs 2010-07-15 16:28:48

回答

-2

保持按下最后一个键码的记录。由于您使用的是onkeydown,因此cmd-v会显示为键码为224(cmd)的事件,然后是键码为86(v)的事件。如果前面的键与cmd和后面的v匹配,则允许它通过。

(你可能会检查CTRL适用于Windows/Linux的pasters以及)

+0

比粘贴更多的方法:例如从上下文和编辑菜单。还有拖动。 – 2010-07-16 08:19:45

5

你喜欢的东西更好:

$('input').bind('keyup', function(e) { 
    this.value = this.value.replace(/[^0-9]/g,''); 
}); 

或者你也可以使用change事件。在这种情况下,不管数据如何进入字段,它都将被验证(并且移除非数字输入)。

+0

+1,以简化和使用'change'事件的简单性。 – 2010-07-16 08:20:36

相关问题