如何在每次使用JQuery在输入字段中更改内容时执行函数?

时间:2011-05-25 11:50:44

标签: javascript jquery events input

我有一个文本字段<input type="text" id="search" />,我希望每次用户更改其中的内容时都执行JavaScript函数(逐个字母)。我怎么能用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 个答案:

答案 0 :(得分:3)

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

以下是在jsfiddle中使用keypress的示例:http://jsfiddle.net/R6vmZ/