Javascript jQuery接受实时输入,然后模拟键入
我在用jQuery模拟实时键入时遇到了一些问题。我的Javascript如下(带有一个实时演示) 这应该等待一个名为Javascript jQuery接受实时输入,然后模拟键入,javascript,jquery,Javascript,Jquery,我在用jQuery模拟实时键入时遇到了一些问题。我的Javascript如下(带有一个实时演示) 这应该等待一个名为test的文本字段的输入,一旦单击一个按钮,它应该清除该文本字段并模拟用户实时键入的字符。出于某种原因,我对setTimeout的调用只生成数组中的最后一个值 但是,如果我将Math.random设置为setTimeout中文本字段的值,而不是keystrokes[counter].value,它似乎每100毫秒更新一次。我到底做错了什么?我猜这和范围有关 编辑: 对不起,我不清楚
test
的文本字段的输入,一旦单击一个按钮,它应该清除该文本字段并模拟用户实时键入的字符。出于某种原因,我对setTimeout
的调用只生成数组中的最后一个值
但是,如果我将Math.random
设置为setTimeout
中文本字段的值,而不是keystrokes[counter].value
,它似乎每100毫秒更新一次。我到底做错了什么?我猜这和范围有关
编辑:
对不起,我不清楚。我希望保留用户操作中的延迟,即在键入之前等待几秒钟,以不同的速度键入单词等。这仍然可能吗?尝试此示例
在您的示例中,时间间隔还有其他问题。这里有一些问题,有些与不必要的代码有关,有些与setTimeout的性质有关 首先,pushKeyStrokes()函数似乎不可靠;它每100毫秒检查一次?此外,它是不需要的,因为以后只要按下按钮就可以遍历输入提供的字符串,并且可以使用charAt来完成 其次,您在setTimeout函数中引用值“counter”,但在调用该函数时,计数器值将达到输入字符串的长度;在第一次调用character display函数之前,每次都会调用counter++ 在任何情况下,我修改了你的JS-Bin;希望它有意义,如果您有任何问题,请告诉我:
$(document).ready(function() {
var value = "";
$test = $("#test");
$("#button").click(function() {
value = $test.val();
$test.val("");
for (var i = 0; i < value.length; i++)
{
window.setTimeout(addChar, 100 * i, value.charAt(i));
}
function addChar(char)
{
$test.val($test.val() + char);
}
});
$(文档).ready(函数(){
var值=”;
$test=$(“#test”);
$(“#按钮”)。单击(函数(){
value=$test.val();
$test.val(“”);
对于(变量i=0;i
})) 我编辑了您在JSBin中发布的代码,在这里和那里修改了一些内容。 重写脚本背后的逻辑以注释的形式添加
我希望实际的输入是实时的。我知道你想做什么,正如我看到的解决方案一样,但这不涉及用户操作的延迟,即在键入下一个单词/char之前等待几秒钟。你希望延迟与用户相同吗?就像在用户阶段准确键入的每个字符一样?这可以通过以下方式完成:)或者只是将setTimeout时间增加为随机值
$(document).ready(function() {
var value = "";
$test = $("#test");
$("#button").click(function() {
value = $test.val();
$test.val("");
for (var i = 0; i < value.length; i++)
{
window.setTimeout(addChar, 100 * i, value.charAt(i));
}
function addChar(char)
{
$test.val($test.val() + char);
}
});