2011-01-06 123 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)"/>