6

スペースが削除されたかバックスペースされたかを検出する方法を見つけ、その場合は関数を実行する必要があります。私はJavaScript/jQueryでこれに取り組んでいます。

次を使用して、削除キーまたはバックスペースキーを押すことができることを知っています。

$(this).keyup(function(event) {
        event.keyCode

ただし、deleteまたはbackspaceコマンドでスペースが削除されたかどうかを確認する方法がわかりません。

どんな提案にも非常に感謝しています。

4

4 に答える 4

2

事前に値をキャッシュし(キーを押したときに値を設定)、キーを押した後の値と比較します。これが、1つ以上のスペースが削除されたことを確実に知る唯一の方法です。キーのチェックは、スペースの削除を実現できる可能性のあるキーを特定できることに依存しており、穴が残る可能性があります。

例として、単語の最後の文字とそれに続くスペースを選択します。最後の文字を押すと、スペースが削除されます。ただし、押されたキーはバックスペースまたは削除ではありません。

于 2012-12-05T17:11:23.567 に答える
2

キーダウンにバインドし、前後の値を比較して、サイズが縮小したかどうかを確認します。

$(input).keydown(function(){
    var currVal = this.value, self = this;
    setTimeout(function(){
        if ( currVal.length > self.value.length ) {
            console.log(currVal.length - self.value.length + " characters have been removed.");
        }
    },0);
});

http://jsfiddle.net/ymhjA/1/

更新されたサンプル:

$("input").keydown(function() {
    var currVal = this.value,
        self = this;
    setTimeout(function() {
        if (currVal.length - self.value.length === 1) {
            var origVal = $.grep(currVal.split(""),function(val){
                return val === " ";
            });
            var newVal = $.grep(self.value.split(""),function(val){
                return val === " ";
            });
            if ( origVal.length != newVal.length ) {
                console.log("a space was removed");
            }
        }
    }, 0);
});​

http://jsfiddle.net/ymhjA/4/

于 2012-12-05T17:09:12.130 に答える
2

ここを参照してください:http://jsfiddle.net/Txseh/

(function(){
    var currentWhitespaceCount;

    $("input").keyup(function(e){
        var newCount = ($(this).val().match(/\s/g) || []).length;

        if (newCount < currentWhitespaceCount)
            alert("You removed one or more spaces, fool.");

        currentWhitespaceCount = newCount;
    });
})();​

入力内の現在の空白文字数を追跡し、数が減少した場合はアラートを出します(または必要な処理を行います)。

于 2012-12-05T17:24:17.080 に答える
1

実際にここに私のコードがありますhttp://jsbin.com/atuwez/3/edit

 var input = $('#input'),
     afterLength,
     beforeLength;

input.on({
  'keydown': function () {
    beforeLength = input.val().split(/\s/).length;
  },
  'keyup': function(event) {
    var key = event.keyCode || event.charCode;

    if( key == 8 || key == 46 ) {
          afterLength = input.val().split(/\s/).length;
          console.log(beforeLength == afterLength);
    }
  }

});
于 2012-12-05T17:36:02.387 に答える