テキストエリアにoninputイベントがあり、高さを確認してサイズを変更します。今、私は時々値を編集する必要があります。これは、jQueryでval()を編集するだけで実行できますが、oninputイベントはトリガーされません。jQueryを使用してプログラムでoninputイベントをトリガーする方法はありますか?
7 に答える
たとえば、次のように簡単に呼び出すことができます。
$("input")[0].oninput = function () {
alert("hello");
};
$("input")[0].oninput();
...しかし、@Sammayeが指摘しているように、jQueryには明示的な「oninput」ハンドラーがないため、POJSを使用する必要があります。
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
入力と変更にバインドできます。
入力はユーザー入力でトリガーされます
変更は、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);
「keypress」または「keydown」で試してください。
例 1:
$("#textarea").keypress(function(){
alert($("#textarea").val());
});
例 2:
$("#textarea").keydown(function(){
alert($("#textarea").val());
});