2013-09-26 102 views
4

我有一個textarea,你只能使用屏幕上的按鈕輸入字符,所以textarea鍵盤編輯功能被禁用。但我想允許用戶使用退格筆劃刪除他輸入的內容。有沒有辦法在JavaScript中做到這一點?只允許使用Javascript的textarea退格

+0

你想要刪除一個字符或整個單詞嗎? –

+0

'$(elem).val($(elem).val()。slice(0,-1));'這樣的事情? –

+0

鑑於你已經有屏幕上的按鈕,你不能創建另一個退格按鈕嗎? – Brian

回答

7

有選擇地啓用密鑰是相當容易的。只需添加一鍵收聽和preventDefault當它是你不想要的關鍵:

myInputElement.addEventListener('keydown', function(e) { 
// console.log(e.keyCode); // for finding key codes by trying them 
    if(e.keyCode >= 37 && e.keyCode <= 40) { 
     return; // arrow keys 
    } 
    if(e.keyCode === 8 || e.keyCode === 46) { 
     return; // backspace (8)/delete (46) 
    } 
    e.preventDefault(); 
}, false); 

(例如小提琴:http://jsfiddle.net/tnayV/

+0

您可能還想要允許任何具有修改鍵(cmd/ctrl/alt)的設置,以允許剪切/複製/粘貼/全選/等。無論如何,它們都可以通過菜單實現,所以沒有真正的限制條件。 – Dave

1

又如只允許backsapce:

document.getElementById('mytextarea').addEventListener('keydown', function(e){ 
    if (e.which != 8){ 
     e.preventDefault(); 
     return false; 
    } 
}, false); 

example