2011-05-25 33 views
2

我有一个文本字段<input type="text" id="search" />,我希望每次用户更改其中的内容(逐字母)时执行JavaScript函数。我如何使用jQuery来做到这一点?如何在每次使用JQuery在输入字段中更改内容时执行函数?

我试图实现函数作为Using JQuery, how do you detect if the value of a text input has changed while the field still has focus?的答案,但对我来说没有任何反应。

这里是我的HTML:

<html> 
<head> 
<script type="text/javascript" src="/jquery-1.6.1.min.js"></script> 
<script type="text/javascript" src="/search.js"></script> 
</head> 
<body> 
<form> 
<input type="text" name="search" id="search" /> 
</form> 
</body> 
</html> 

我search.js是:

var target = $('#search'), val = target.val(); 

function search() 
{ 
    alert('search'); 
} 

target.keyup(search); 

我也试图与(没有任何反应):

$('input[name=search]').change(function() { 
    alert('changed'); 
}) 

如果我尝试只是使用jQuery添加一些HTML,它的工作原理如下:

$(function(){ 
    $("<p>hello</p>").insertAfter("#search"); 
}) 
+1

元素具有ID'search',不'itemsearch',而你总是把里面的代码'$(函数(){...} )'如果你想访问DOM元素。 – 2011-05-25 11:58:09

回答

3

直到控件失去焦点,更改事件才会触发。如果您只对文本感兴趣,则可以使用.keypress()在内容更改之前执行某些操作,或者在.keyup()之后执行某些操作。

这里是使用的jsfiddle按键的例子:http://jsfiddle.net/R6vmZ/

+3

'keyup'会更好,因为按键事件在*字段内容改变之前触发*。 – 2011-05-25 11:56:47

+0

@Marcel Korpel:我已经更新了我的答案以表明两种方法。 – verdesmarald 2011-05-25 12:03:52

相关问题