如何使像stackoverflow类似的标题搜索

时间:2012-01-06 12:50:10

标签: php javascript

* 更新: *我已经回答了我的问题。但你仍然可以给我建议,我会把你的答案选为

注意:如果您不需要知道我想对代码做什么,只需跳过前几段并直接查看代码并告诉我它们为什么不能正常工作。

当你在ask页面输入你的标题时,我想做一些类似stackoverflow的类似标题搜索。

我需要拆分单词才能制作正则表达式,然后在数据库中搜索。由于我的应用程序是中文(每个单词之间没有空格),我认为使用PHP将中文分成有意义的短语太难了。我有一个想法,根据中国IME的特点,使用javascript在客户端分割它,例如,如果你想在中文输入“你好中国”这个词,人们通常在IME中键入“nihao [space] zhongguo”(注意空格键的位置,因为'你好'(nihao - hello)是一个短语而'中国'(中国 - 中国)是另一个。因此,当人们按空格键时,我记录他在空格前输入的单词并启动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"/> 

1 个答案:

答案 0 :(得分:0)

我想我知道为什么它现在不起作用了:

首先,i应该是一个全局变量;

其次,keydown()函数应该在keyup()之外。修改过的js:

$(function(){
    i=0;
    timer=null;
    $('#t').keyup(function(e){
        if(e.keyCode==32)
        {
            eval("a"+i+"=$(this).val()");
            i++;
            timer=setTimeout("for(b=0;b<i;b++){alert(eval('a'+b));}",1000)
        }
    })
    if($("#t").keydown())
    {
        clearTimeout(timer);
    }
})

如果您对我的想法或代码有其他建议,您仍然可以回答这个问题,或者我会在一段时间后选择这个。