50

テキストエリアにoninputイベントがあり、高さを確認してサイズを変更します。今、私は時々値を編集する必要があります。これは、jQueryでval()を編集するだけで実行できますが、oninputイベントはトリガーされません。jQueryを使用してプログラムでoninputイベントをトリガーする方法はありますか?

4

7 に答える 7

18

たとえば、次のように簡単に呼び出すことができます。

$("input")[0].oninput = function () {
   alert("hello"); 
};

$("input")[0].oninput();

...しかし、@Sammayeが指摘しているように、jQueryには明示的な「oninput」ハンドラーがないため、POJSを使用する必要があります。

JS Fiddle のデモ

于 2012-06-25T12:13:40.457 に答える
7

oninput は実際にはまだ JQuery にはありません。

ここでそれに関する投稿を見ることができます:

http://forum.jquery.com/topic/html5-oninput-event

http://bugs.jquery.com/ticket/9121

基本的に、彼らはまだそれを望んでいないというのが一般的なコンセンサスです。

しかし、いいえ、val() を直接変更しても、html5 oninput はトリガーされません。これは、ユーザーが UI で入力の値を変更したときであると仕様で述べられているためです。

編集:

ただし、HTML5 のみのイベントを使用したい人のためにプラグインを親切に作成してくれました: https://github.com/dodo/jquery-inputevent

于 2012-06-25T12:14:53.963 に答える
5

入力と変更にバインドできます。

入力はユーザー入力でトリガーされます

変更は、change()および val(" ") への割り当てでトリガーされますが、いくつかの変更の後にトリガーされます

$("#textarea").bind("input change", function() {
    alert("change happend");
});
...

変更にバインドした後、各 val(" ") 割り当てで手動で呼び出すことができます。

$("#textarea").val("text").change();

または、jQuery val(" ") メソッドを上書きして、ユーザーの val(" ") 呼び出しごとに変更をトリガーすることもできます。

(function ($) { var fnVal = $.fn.val;
    $.fn.val = function(value) {
        if (typeof value == 'undefined') {
            return fnVal.call(this);
        }
        var result = fnVal.call(this, value);
        $.fn.change.call(this); // calls change()
        return result;
    };
})(jQuery);
于 2014-11-19T19:22:46.937 に答える
0

「keypress」または「keydown」で試してください。

例 1:

$("#textarea").keypress(function(){
    alert($("#textarea").val());
});

例 2:

$("#textarea").keydown(function(){
    alert($("#textarea").val());
});
于 2017-11-08T19:19:02.153 に答える