2012-03-28 51 views
53

如何做到这一点?检测backspace并删除“输入”事件?

我想:

var key = event.which || event.keyCode || event.charCode; 

if(key == 8) alert('backspace'); 

,但它不工作...

如果我做它的工作原理的按键事件是相同的,但我不希望使用按键,因为它在我的输入字段中输出输入的字符。我需要能够控制


我的代码:

$('#content').bind('input', function(event){ 

    var text = $(this).val(), 
     key = event.which || event.keyCode || event.charCode; 

    if(key == 8){ 
     // here I want to ignore backspace and del 
    } 

    // here I'm doing my stuff 
    var new_text = 'bla bla'+text; 
    $(this).val(new_text); 
    }); 

没有字符应该在我输入附加,除了我正在与VAL() 实际上从输入加用户应该完全忽略,只有按键动作对我来说很重要

+2

你其实并不需要做的OR'ing - event.which就好了,jQuery的标准化活动对象为您服务。请参阅http://api.jquery.com/category/events/event-object/ – Niko 2012-03-28 12:07:25

+0

您应该将事件的名称作为'.bind'的第一个参数,而不是选择器。应该是'$('content')。bind('keypress',...' – pmrotule 2016-09-30 18:35:31

回答

68

使用.onkeydown并取消使用return false;删除。就像这样:

var input = document.getElementById('myInput'); 

input.onkeydown = function() { 
    var key = event.keyCode || event.charCode; 

    if(key == 8 || key == 46) 
     return false; 
}; 

或者使用jQuery,因为你添加一个jQuery标签你的问题:

jQuery(function($) { 
    var input = $('#myInput'); 
    input.on('keydown', function() { 
    var key = event.keyCode || event.charCode; 

    if(key == 8 || key == 46) 
     return false; 
    }); 
}); 

+13

如果你想从右键单击>粘贴输入怎么办? – ctb 2013-09-03 18:01:40

+2

''keydown''不适用于Chrome Android,单击退格或删除时返回空白 – Kosmetika 2014-07-14 14:08:12

+1

在函数中,我们必须保持事件作为参数,那么只有它会起作用 like function(event)------------------- ------- var input = document.getElementById('myInput'); input.onkeydown = function(event){ var key = event.keyCode || event.charCode; if(ke y == 8 || key == 46) return false; }; – 2016-06-15 17:41:11

3

您是否尝试过使用'onkeydown'? 这是您正在寻找的活动。

它在输入插入前运行,并允许您取消字符输入。

+0

但我该如何取消它?因为我在输入上使用了val()并且它仍然附加了输入的字符 – Alex 2012-03-28 11:54:14

+2

' event.preventDefault()'? – Niko 2012-03-28 12:06:09

+0

你可以简单地'返回false;'在使用jQuery时取消任何事件 – iMoses 2012-03-28 13:02:20

9

使用jQuery

event.which属性规范化event.keyCode和event.charCode。建议观看event.which用于键盘按键输入。

http://api.jquery.com/event.which/

jQuery('#input').on('keydown', function(e) { 
    if(e.which == 8 || e.which == 46) return false; 
}); 
+1

我一直在使用jQuery,但没有看到这个。总是善于学习新的东西。 +1! – Sablefoste 2016-10-04 17:49:30

1
$('div[contenteditable]').keydown(function(e) { 
// trap the return key being pressed 
if (e.keyCode === 13 || e.keyCode === 8) 
{ 
    return false; 
} 
}); 
+1

“Enter”键码13 – 2016-04-07 05:26:36

+1

“BackSpace”键码8 – 2016-04-07 05:26:57

0

event.key === “退格”

最近的和更清洁:使用event.key。没有更多的任意数字代码!

input.addEventListener('keydown', function(event) { 
    const key = event.key; // const {key} = event; ES6+ 
    if (key === "Backspace" || key === "Delete") { 
     return false; 
    } 
}); 

Mozilla Docs

Supported Browsers

0

​​最近和许多event.key === "Backspace" or "Delete"

更清洁:使用event.key。没有更多的任意数字代码!

input.addEventListener('keydown', function(event) { 
    const key = event.key; // const {key} = event; ES6+ 
    if (key === "Backspace" || key === "Delete") { 
     return false; 
    } 
}); 

Mozilla Docs

Supported Browsers