Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/252.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 即时搜索功能是一个按键后面_Javascript_Php - Fatal编程技术网

Javascript 即时搜索功能是一个按键后面

Javascript 即时搜索功能是一个按键后面,javascript,php,Javascript,Php,我的网站上有一种“翻译”程序,使用即时搜索功能。我有一个文本区 <textarea name="text" onkeydown="searchq();"></textarea> 将每个单词发送到translate.php if(isset($_POST["text"])){ $words = explode(' ',$_POST['text']); $i = 0; foreach($words as $word){ // per

我的网站上有一种“翻译”程序,使用即时搜索功能。我有一个文本区

<textarea name="text" onkeydown="searchq();"></textarea>
将每个单词发送到translate.php

if(isset($_POST["text"])){
    $words = explode(' ',$_POST['text']);

    $i = 0;
    foreach($words as $word){
        // performs transformations on the words
        $output = $word . " ";
        echo($output);
        $i++;
    }
}
然而,如果你在我的网站上试用,你可以清楚地看到,如果你输入“y”,什么都不会显示,只有当你输入下一个字母或空格时,“y”才会显示。即时翻译过程似乎是背后的一个特征。是什么原因造成的?(商标符号和“er”字尾是我在“翻译”中添加的东西)


我有一个轻微的想法,为什么这是不正常的工作,但没有线索如何解决它。非常感谢您的帮助

要添加的字符前面有
keydown
事件(甚至
keypress
事件也在前面)。如果您想回复正在键入的信件,请回复
输入
,或者,对于较旧和/或有缺陷的浏览器(基本上),用简短的
设置超时
回复
按键

使用
输入

$(“textarea”)。在(“输入”,函数()上{
$(“”).text($(this.val()).appendTo(document.body);
});


@AndrewHu:可能吧。当然,如果用户右键单击并粘贴,则不会出现
keyup
事件。在这种情况下(在支持它的浏览器上),你会得到一个
input
事件。哦,这是真的,特别是因为我的很多朋友说他们想将选定的文本粘贴到其中。看起来我会使用你的方法。@AndrewHu:对于这样的事情,我倾向于在做实际工作之前对一系列事件做出响应,并使用短暂的延迟(比如20毫秒),这样我就不会重复做工作。我想我通常的设置是
input keyup change
。我也会添加类似的内容。非常感谢你的帮助,你是一个好人。@AndrewHu:我添加了一个简单的去Bouncing的例子,这就足够了。顺便说一句,我建议按照上面所示连接事件,而不是在HTML中使用老式的
onxyz
属性。当做
if(isset($_POST["text"])){
    $words = explode(' ',$_POST['text']);

    $i = 0;
    foreach($words as $word){
        // performs transformations on the words
        $output = $word . " ";
        echo($output);
        $i++;
    }
}