2012-03-28 118 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