2011-01-06 114 views
4

如何在输入字段集中一次后检查输入字段的值? (与jquery)。我正在寻找进行实时搜索,并完全删除我的表单上的提交按钮。jquery实时搜索

回答

8

我会结合KEYUP和MouseUp事件的输入

$("#search").keyup(Search).mouseup(Search); 

function Search(event) 
{ 
    // keyup for keyboard entry 
    // mouseup for copy-pasting with the mouse   
} 

与此在的jsfiddle战斗后,我终于想出了这一点:

$("#search").keyup(function(e) { 
    Search(e); 
}).bind("paste", function(e) { 
    // have to do this so the DOM can catch up on mouse right-click paste 
    setTimeout(function() { Search(e); }, 100); 
}); 

我没不知道paste事件,但很明显,它是真棒

工作示例:http://jsfiddle.net/rLAxL/1/

+0

延迟行动的任何提示?我应该使用.delay()吗? – andrei 2011-01-06 20:36:56

+0

在你的ajax调用之前设置一个像`searching = true`的布尔,并在再次调用之前检查`if(!searching)`,然后在ajax完全回调中设置`searching = false`。您还需要重新搜索最新值,如果它不能搜索时它想 – hunter 2011-01-06 20:42:11

1
$('#<element>').bind('keyup', function() { //do something }); 
0

setInterval浮现在脑海。

或者你可以看看onKeyUp或onKeyDown或onClick或onChange等事件。

2

绑定keyup事件以检查内容并在内容更改时发出请求。要限制请求,请使用setTimeout

$("#input").keyup(function(e){ 
    if (window.liveSearch) clearTimeout(window.liveSearch); 
    window.liveSearch = setTimeout(function(){ 

     // request results here 

    }, 1000); // delay time in ms 
}); 

为了提高性能,你可以保存对象的搜索(例如缓存[“某些搜索”] =结果),如果相同的请求时,你不必再次请求服务器。

0

试试这个:

$("#search").on("keyup",function(){ 
    Search(...); 
} 

的事情是,你需要做的是调用你的函数是做代码

或者把这个网站作为输入HTML头像功能:

<input type="text" onKeyUp="Search(this.value)"/>