2

jQueryを使用してテキストエリアの値が変更されたかどうかを検出するにはどうすればよいですか? 私は現在 keyup() を使用していますが、これはもちろんすべてのキーストロークをトリガーします。押された矢印キーまたはテキストエリアの値に影響を与えないその他のキーである場合、コードを実行したくありません。

見てみましょう:

$('textarea').keyup(function() {
     if (content was changed)
         // Do something
});

お分かりできると良いのですが。どうすればこれを最善の方法で行うことができますか? 変更を確認するために現在の値を古い値と比較したくありません。それが唯一の方法ではないことを願っています。

4

2 に答える 2

6

どうしても最も簡単な方法は、古い値をデータに保存し、すべてのチェックを行うことkeyupです。ソリューションは非常に短く、どのような場合でも機能します。車輪を再発明する必要はありません。

$("textarea").data("oldValue", function() {
    return this.value;
}).keyup(function() {
    var $this = $(this);
    if (this.value !== $this.data("oldValue")) {
        // Do something

        $this.data("oldValue", this.value);
    }
});

デモ: http://jsfiddle.net/vvbSj/

于 2013-02-12T11:20:45.147 に答える
0
$('textarea').blur(function() {
  //This will be invoked when the focus is removed
});

$('textarea').change(function() {
  //Same as the blur
});

これは、あなたの望むことですか

于 2013-02-12T11:23:28.747 に答える