2012-11-28 39 views
0

如何在用戶輸入3個字符後進行Ajax搜索? 我不是在JavaScript是專家,但這裏是我的HTML文件至今:在3個字符後執行Ajax搜索

<form> 
<input type="text" id="searchField" name="searchField" placeholder="..."> 
</form> 

<script> 
    $('#searchField').searchbox({ 
    url: 'components/search_ajax.php', 
    param: 'q', 
    dom_id: '#searchResult', 
    delay: 0, 
    loading_css: '#spinner' 
    }); 
</script> 

目前搜索被稱爲只是當退格鍵被按下(然後我所有的數據庫條目中表示,因爲有是沒有字符的匹配搜索)。

在此先感謝! 此致敬禮。

+0

您使用的是什麼插件? – Prisoner

+0

@ doniyor感謝您的提示! –

回答

0

首先,你需要讓我們知道哪些插件,您正在使用,我有一種感覺是this,如果是,更改:

process: function(terms) { 

process: function(terms) { 
    if(terms.length < 3) return; 

但你也應該限制這對您的服務器端,否則我就可以直接去你的SCR ipt查看所有條目。您可以在php文件頂部執行此操作:

if(strlen(trim($_GET['q'])) < 3) return; // only basic, would need more checks 
+0

你的感覺是對的。並且您的解決方案運行良好(在兩側,JavaScript和PHP文件)。謝謝!! –

1

這樣做:

$('#searchField').change(function() { 
var value = $(this).val(); 
if(value.length>= 3){ 
    ajax_search(); 
} 

}); 

function ajax_search(){ 
    $('#searchField').searchbox({ 
    url: 'components/search_ajax.php', 
    param: 'q', 
    dom_id: '#searchResult', 
    delay: 0, 
    loading_css: '#spinner' 
    }); 
} 
+0

這是錯誤的。 $('#searchField')。searchbox()'將在每次更改輸入時在'searchField'上初始化。 – Prisoner

+0

他需要的是根據輸入的長度開始搜索。 ''searchbox()''也會在這裏被初始化,但是隻有在用戶輸入了長度3.他沒有提及他在使用什麼,我給出的只是簡單的代碼,不管任何插件 – doniyor

+0

是的,我理解那,但如果你繼續重新初始化'searchbox()'你會有一段糟糕的時間mmmkay – Prisoner