3

私はそのような関数を呼び出すjQueryコードを持っています:

$('#text_area').bind('input propertychange', function() {...

関数にバインドされる要素はテキスト領域です。テキストを入力して削除すると、関数は問題なく呼び出されますが、ホットキーを使用するかマウスをドラッグしてすべてのテキストを選択し、バックスペースを押すと、関数は呼び出されません。これは、呼び出す関数を取得できない唯一のインスタンスです。'input propertychange'これはイベントで予想されますか?もしそうなら、どうすればこれを変更して期待どおりに動作させることができますか? これは、Chrome、IE、および Firefox に当てはまることに注意してください。

4

3 に答える 3

4

これはあなたの目的に合っていますか?

$('#text_area').on('keyup', function() {
    console.log('called');
});

フィドル: http://jsfiddle.net/KyleMuir/ruJZD/

また、jQuery 1.7 .on()( http://api.jquery.com/on/ ) では、イベントをバインドする方法として推奨されています。

編集:誰かがテキストを右クリックして貼り付けた後だったので、ここに更新があります:

$('#text_area').on('keyup paste', function() {
    console.log('called');
});

フィドル: http://jsfiddle.net/KyleMuir/ruJZD/9/

于 2013-10-11T21:04:21.173 に答える
3

テキスト領域がクリアされたときに関数を呼び出す必要があります。または、テキストがテキスト領域に貼り付けられたときに同じ関数を呼び出したいとします。

質問に含まれているものと同じコードを使用できます。この回答に実際のデモを含めました

 <textarea id='textarea1'>data</textarea>

//.....................................

$("textarea").bind('input propertychange', function(){
  alert($(this).val());
});

注: jquery プラグインを使用する

デモ

同時トリガーを防ぎたい場合は、以下のコードを使用してください

<textarea id="textarea"></textarea>

//.......

var text = "";
$("#textarea").on("change keyup paste", function() {
    var Val = $(this).val();
    if(Val == text) {
        return; //prevent multiple simultaneous triggers
    }

    text = Val;

    alert("changed!");
});

デモ1

'Note: Checked with chrome and firefox'
于 2015-02-20T11:47:29.843 に答える
0

.bind メソッドは、最新の 3 j クエリ バージョンで非推奨になりました。代わりに、正しい答えを得るために .on in を使用できます。

 <textarea id="anytextid"></textarea>
<div id="sethere"></div>

この変更の正しいテキスト

$('#anytextid').on('input propertychange', function() {
    $('#sethere').html($(this).val().length );
});
于 2017-09-18T14:03:07.240 に答える