2013-09-26 57 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