* 更新: *我已经回答了我的问题。但你仍然可以给我建议,我会选择你的答案如何做类似于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