我已经在我的JavaScript中使用正则表达式阻止了我的文本字段的所有aTOz字符输入但是因为我阻止了整个字母表,所以我无法执行 CTRL + C 和 CTRL + V , 这是我的正则表达式:
var reValidChars = /[\x08\x0D\d]/;
iKeyCode = objEvent.charCode;
strKey = String.fromCharCode(iKeyCode);
if (!reValidChars.test(strKey)) {
return false;
}
你能帮我解决这个问题。 提前致谢
答案 0 :(得分:13)
使用RegExp无法检测按键,但您可以按照以下步骤操作:
document.body.addEventListener("keydown",function(e){
e = e || window.event;
var key = e.which || e.keyCode; // keyCode detection
var ctrl = e.ctrlKey ? e.ctrlKey : ((key === 17) ? true : false); // ctrl detection
if ( key == 86 && ctrl ) {
console.log("Ctrl + V Pressed !");
} else if ( key == 67 && ctrl ) {
console.log("Ctrl + C Pressed !");
}
},false);
答案 1 :(得分:0)
使用paste
事件在剪贴板粘贴时执行操作。
请注意,用户可以通过多种方式将内容添加到文本框中!
因此,您不必仅在键盘输入(keyup
)上捕获内容,而是需要将它们捕获到实际的粘贴级别和其他事件中!这意味着您可能还需要观察任何或所有这些事件,具体取决于您的情况:
答案 2 :(得分:0)
如果要检测复制和粘贴到控件,则应使用控件事件而不是regexp。
document.addEventListener('copy', function(e){
e.clipboardData.setData('text/plain', 'Hello, world!');
e.clipboardData.setData('text/html', '<b>Hello, world!</b>');
e.preventDefault(); // We want to write our data to the clipboard, not data from any user selection
});
document.querySelector('textarea').addEventListener('paste', (e) => {
console.log(e);
});