2011-05-29 115 views
20

有没有办法实现文本更改事件来检测html输入文本字段上的文本更改?
使用按键事件(按下按键等)可以模拟这种情况,但它确实没有性能和困难,有没有更好的方法?html文本输入onchange事件

+4

请给出更多细节。你需要做什么 - 没有想到如何去做。例如,如果该字段接收到来自条形码扫描器的输入,则我将监视该字段而不是使用键盘按键或onchange – mplungjan 2011-05-29 17:54:45

+1

@ mplugjan:用户键入到文本框中以搜索查询,并且输出区域不断更新 – user775187 2011-05-30 06:06:21

回答

24

当我做这样的事情时,我使用onKeyUp事件。

<script type="text/javascript"> 
function bar() { 
     //do stuff 
} 
<input type="text" name="foo" onKeyUp="return bar()" /> 

,但如果你不想使用HTML事件,你可以尝试使用jQuerys .change()方法

$('.target').change(function() { 
    //do stuff 
}); 

在这个例子中,输入必须有一个类“目标“

如果你将拥有你想拥有做同样的事情时,他们的文本更改多个文本框,你需要他们的数据,那么你可以这样做:

$('.target').change(function(event) { 
    //do stuff with the "event" object as the object that called the method 
)}; 

这样你可以使用相同的代码,使用相同的类的多个文本框,而不必重写任何代码。

+0

使用keyup事件实现的jQuery的变化事件? – user775187 2011-05-30 06:05:22

+0

@ user775187不,我认为它是它实现的onChange事件,因为您也可以使用更改事件来处理单选按钮,选择列表,选择框等等。 – CaffeinatedCM 2011-05-30 18:13:45

+0

-1:“但是如果你不想使用html事件,你可以尝试使用jQuerys .change()方法。”在使用html中的event属性和使用jQuery之间有很多选项。没有的建议相当具有误导性。最重要的是,从你的回答中也可以看出,这两件事实际上与完全不同的事件有关。 – Jasper 2017-10-14 19:47:11

5

好吧,除非我误解你可以只使用onChange属性:

<input type="text" onChange="return bar()"> 

注:通过单击走在FF 3(至少)这不叫,直到一些格兰用户已经证实了他们的改变形成元素,点击输入或其他。

28

onChange在您稍后失去焦点之前不会触发。如果您想对各种瞬时变化非常严格,请使用:

<input 
    type  = "text" 
    onchange = "myHandler();" 
    onkeypress = "this.onchange();" 
    onpaste = "this.onchange();" 
    oninput = "this.onchange();" 
/>