使用jQuery触发oninput事件

我在textarea上有一个oninput事件来检查高度并调整它的大小。 现在我需要编辑值。 我只是通过在jQuery中编辑val()来实现这一点,但这不会触发oninput事件。 有没有办法用jQuery以编程方式触发oninput事件?

使用.on('input') 。 例如:

 $('textarea').on('input', function() { text = $('textarea').val(); $('div').html(text); }); 
   

这有点太晚了,但为了将来参考,有.trigger方法。

 $("#testArea").on("input", function(e) { $("#outputArea").text( $(e.target).val() ) }); $("#testArea").val("This is a test"); $("#testArea").trigger("input"); 
   

你可以简单地调用它,例如:

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

…但正如@Sammaye指出的那样,jQuery没有明确的“oninput”处理程序,所以你必须使用POJS。

JS小提琴演示 。

oninput实际上还没有在JQuery中。

你可以在这里看到有关它的post:

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

推送RUN CODE SNIPPET以查看结果

我一直在寻找一个更好的例子来将输入范围加入到输入值中,因此 我在JQuery插件中修改了Fernando的示例 ,因此:对于每个你将拥有他的值: 所以就像任何父范围id一样=“range1”有一个子id =“value” class =“range1”

   1
2
3
4
...
n