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++;
}
}