2012-12-05 15 views
6

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

私は、私が使用して、削除またはバックスペースキーを押しますを取得することができます知っている:削除またはバックスペースコマンドはスペースを削除した場合

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

をしかし、私が言う方法がわかりませんか?

非常に感謝しています。

+0

である前にあれば、それはその意志スペースになった後、あなたが/あなたの入力要素でキャレットの現在の位置を確認し、チェック押します削除されますか? – koopajah

+0

スペースのみを検出する必要がありますか、テキストが混在している可能性がありますか? – dmi3y

+0

@ dmi3y私は削除されるスペースを検出する必要があります。私は複数の文字の削除を処理する何かがあります。 – Baxter

答えて

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; 
    }); 
})();​ 

それは入力に空白文字の現在の数を追跡し、これまでの数がダウンした場合、それは警告(またはあなたが好きなん)。あなたがバックスペースまたは削除キーを検出すると、実際にここに

+0

簡単に実装し、完璧に動作します、ありがとう! – Baxter

+0

これは動作しません...試したクロム、ファイアフォックス、サファリ... – suMi

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/

+0

これはOPの質問には答えません。 – Shmiddty

+0

@Shmiddty:そうです。どの方法でもスペースを削除すると、ここに表示されます。 –

+0

スペースが削除されているかどうかはここには何もありません。これにより、ANY文字がいつ削除されたかを知ることができます。 – Shmiddty

2

キャッシュ値予め(キー押下に値を設定)し、キー押下後の値と比較します。これは、1つ以上のスペースが削除されたことを確実に知る唯一の方法です。鍵のチェックは、可能なキーがスペースの除去を達成できるかどうかを調べることができ、おそらく穴を残すでしょう。

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

+0

それは大丈夫ですが、他のすべてのキャラクターはkeyup()の関数を呼び出します。私はバックスペースを扱い、別の方法で削除したいと思います。もしdeleteやbackspaceがスペースを削除した場合にのみ関数を呼び出します。そうでなければ、それらのコマンドを無視します。 – Baxter

+0

あらかじめ値をキャッシュしておき、キーを押した後の値と比較する方法の例を挙げることはできますか? – Baxter

+1

@Baxterこれは私のコードとまったく同じです。 –

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); 
    } 
    } 

}); 
関連する問題