4

我正在尝试制作一个简单的搜索框。如何在输入框中输入一个字母后触发功能?我用了.keyup,但这似乎没什么用,因为当键入一个变音字符时,该函数被触发了3次。

<input id="text" type="text" />
<div></div>
<script>
    $('#text').keyup(function(){
        $('div').append('TEST'+$(this).val());
    });
</script>

除非您键入任何变音字符,否则上述代码可以正常工作:ą、ś、ł、ż、ź、ć 等。

我不能使用 .keypress 或 .keydown ,因为它们会在输入字符之前触发功能。

稍后编辑:

我知道我的示例可能不够清楚,无法理解问题,但是......在我的真实代码中,每次输入字母时,都会执行 SQLite 查询。如果键入变音字符或大写字母,则查询会执行三到两次,这会减慢整个脚本的速度。如果您在计算机网络浏览器中执行脚本不会有很大的不同,但在移动浏览器中存在显着滞后。

4

2 回答 2

5
var i = 0;    

$('#text').keyup(function(event) {
    i++;
    if(i == 1)
    {
        $('div').append('TEST'+$(this).val());
    }
});

这对我来说应该有效,您还可以检测到正在输入的特定密钥

于 2012-04-15T00:01:13.907 回答
5

我考虑检查字符串的值与上次更改的时间相比。所以按键不会运行该函数,除非它导致字符串被更改。

http://jsfiddle.net/82sTJ/1/

于 2012-04-15T00:17:58.030 回答