检测 "input" 事件中的退格和删除键?

128
怎么做?
我尝试过:
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() 添加的内容,输入框中不应追加任何字符。实际上,用户的输入应完全被忽略,只有按键操作对我很重要。


3
你实际上不需要执行“或”运算符 - event.which 就足够了,因为 jQuery 会为你规范化事件对象。请参考 http://api.jquery.com/category/events/event-object/。 - Niko
你应该将事件的名称作为.bind的第一个参数,而不是选择器。应该是$('content').bind('keypress', ... - pmrotule
11个回答

-1

演示实况

Javascript
<br>
<input id="input">
<br>
or
<br>
jquery
<br>
<input id="inpu">

<script type="text/javascript">
var myinput = document.getElementById('input');
input.onkeydown = function() {
  if (event.keyCode == 8) {
    alert('you pressed backspace');
    //event.preventDefault(); remove // to prevent backspace
  }

  if (event.keyCode == 46) {
    alert('you pressed delete');
    //event.preventDefault(); remove // to prevent delete
  }
};

//jquery code

$('#inpu').on('keydown', function(e) {
  if (event.which == 8) {
    alert('you pressed backspace');
    //event.preventDefault(); remove // to prevent backspace
  }

  if (event.which == 46) {
    alert('you pressed delete');
    //event.preventDefault(); remove // to prevent delete
  }
});
</script>

为什么要给我负评!? - Dexter

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接