* 更新: *我已經回答了我的問題。但你仍然可以給我建議,我會選擇你的答案如何做類似於stackoverflow的類似標題搜索
注意:如果你不需要知道我想要做的代碼,只需跳過前幾個段落,直接看到的代碼並告訴我他們爲什麼不能沒有錯誤地工作。
當你在問題頁面輸入標題時,我想做類似於標題搜索的類似於stackoverflow的東西。
我需要拆分單詞以製作正則表達式,然後在數據庫中進行搜索。由於我的申請是中文的(每個單詞之間沒有空格),我認爲使用PHP將中文分成有意義的短語太難了。根據中國輸入法的特點,我有一個想法是在客戶端使用javascript進行分割,例如,如果你想在中文中輸入「你好中國」這個詞,人們通常在輸入法中輸入「nihao [space] zhongguo」注意空格鍵的位置),因爲'你好'(nihao - hello)是一個短語,'中國'(zhongguo - china)是另一個。所以當人們按空格鍵時,我記錄他在空格前輸入的單詞,並啓動一個2秒鐘的定時器,如果他或她輸入另一個單詞清除定時器並繼續記錄,如果他或她不記錄,則將每個記錄的單詞發送到服務器。
Qustion是,這是一個好主意嗎?有沒有其他方便的方法來做到這一點?以及爲什麼我寫這些測試行將無法正常工作。
腳本:
$(function(){
var i=0;
$('#t').keyup(function(e){
if(e.keyCode==32)
{
eval("a"+i+"=$(this).val()");
i++;
var timer=setTimeout("for(b=0;b<i;b++){alert(eval('a'+b));}",1000);
if($("#t").keydown())
{
clearTimeout(timer);
}
}
})
})
HTML:
<input id="t"/>
使用除「i」以外的全局變量名:S – fmsf 2012-01-06 13:13:53
您不應該使用'eval'或將字符串傳遞給'setTimeout'。你最好使用一個數組並使用'arr.push($(this).val())'追加它。對於'setTimeout',你也可以傳遞一個函數。這將使您免於使用全局變量。此外,在任何地方使用'var'並在適當的地方添加分號是一個好主意。 – pimvdb 2012-01-06 13:15:49