1. ホーム
  2. javascript

[解決済み] input "イベントでbackspaceとdelを検出する?

2022-09-11 07:26:59

質問

どうすればいいのでしょうか?

試してみました。

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

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

が、うまくいかない...。

keypressイベントで同じことをすると動作しますが、入力された文字が入力フィールドに出力されるので、keypressは使いたくありません。それを制御する必要があります。


私のコード

  $('#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()で追加しているもの以外に、入力に文字を追加してはいけません。 実際には、ユーザーからの入力は完全に無視されるべきで、私にとって重要なのはキーを押す動作だけです。

どのように解決するのですか?

使用方法 .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;
  });
});