Sur*_*ttu 12 javascript regex jquery keycode
我试图允许用户只输入数字并将控件复制并粘贴到文本框中.我能够限制用户只输入数字,但复制,粘贴不起作用,帮我解决这个问题.
这是我的脚本:
$(".allow_only_numbers").keydown(function (e) {
var ctrlDown = false;
var ctrlKey = 17, vKey = 86, cKey = 67;
if (e.keyCode === ctrlKey){
ctrlDown = true;
}
// Allow: backspace, delete, tab, escape, enter and .
if ($.inArray(e.keyCode, [46, 8, 9, 27, 13, 110]) !== -1 ||
// Allow: Ctrl
(e.keyCode === ctrlKey) ||
// Allow: Ctrl+A
(e.keyCode === 65 && e.ctrlKey === true) ||
// Allow: Ctrl+v
(e.keyCode === vKey && ctrlDown) ||
// Allow: Ctrl+c
(e.keyCode === cKey && ctrlDown) ||
// Allow: home, end, left, right, down, up
(e.keyCode >= 35 && e.keyCode <= 40)) {
// let it happen, don't do anything
return;
}
// Ensure that it is a number and stop the keypress
if ((e.shiftKey || (e.keyCode < 48 || e.keyCode > 57)) && (e.keyCode < 96 || e.keyCode > 105)) {
e.preventDefault();
}
});
Run Code Online (Sandbox Code Playgroud)
这是jsfiddle链接:https://jsfiddle.net/sureshpattu/stwzhceL/1/
Joh*_*n R 18
尝试event.keyCode和event.metaKey这样.
$(document).ready(function() {
$(".allow_only_numbers").keydown(function(e) {
// Allow: backspace, delete, tab, escape, enter and .
if ($.inArray(e.keyCode, [46, 8, 9, 27, 13, 110, 190]) !== -1 ||
// Allow: Ctrl+A,Ctrl+C,Ctrl+V, Command+A
((e.keyCode == 65 || e.keyCode == 86 || e.keyCode == 67) && (e.ctrlKey === true || e.metaKey === true)) ||
// Allow: home, end, left, right, down, up
(e.keyCode >= 35 && e.keyCode <= 40)) {
// let it happen, don't do anything
return;
}
// Ensure that it is a number and stop the keypress
if ((e.shiftKey || (e.keyCode < 48 || e.keyCode > 57)) && (e.keyCode < 96 || e.keyCode > 105)) {
e.preventDefault();
}
});
});Run Code Online (Sandbox Code Playgroud)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<input type="number" class="allow_only_numbers" />Run Code Online (Sandbox Code Playgroud)
编辑:
从代码中删除以下代码段.
var ctrlDown = false;
var ctrlKey = 17, vKey = 86, cKey = 67;
if (e.keyCode === ctrlKey) {
ctrlDown = true;
}
Run Code Online (Sandbox Code Playgroud)
由于ctrlDown将false同时按下C并V用于复制和粘贴.因此,你的工作ctr+c和ctrl+v不工作.
$(".allow_only_numbers").on("input",function (e) {
e.target.value = e.target.value.replace(/[^0-9]/g,'')
});Run Code Online (Sandbox Code Playgroud)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text" class="allow_only_numbers" />Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
20384 次 |
| 最近记录: |