等待按键超时

时间:2015-02-22 09:48:04

标签: javascript keypress

在我进行编码的实验中,在每次试验中,我需要显示刺激(搜索阵列),然后等待最多5秒钟让受试者用按键响应。如果按下某个键,则立即开始下一次试验,或者在5秒后开始。

我只想知道我是否可以在JavaScript中编写类似的内容,如果是这样,我应该如何编写实验代码?此外,我应该能够存储按下的键的标识和时间戳。

2 个答案:

答案 0 :(得分:0)

<script>
var timeout;

timeout = setTimeout(next, 5000); //execute function "next" after 5000 miliseconds

//With jQuery
//$("#element").on("keypress", function(){ clearTimeout(timeout); next();} );

//Without jQuery
function elementOnKeypress()
{
clearTimeout(timeout); //don't execute "next" after 5000 (or less) ms
next(); //run "next"
}

function next() 
{ 
//your code ..
}
</script>
<element onkeypress="elementOnKeypress();"></element><!-- element is your html-element to be keypressed -->

答案 1 :(得分:0)

根据我的理解,您的实验流程如下:

  1. 显示刺激
  2. 重复检查按键
  3. 如果已经过了5秒,则显示下一次刺激
  4. 如果按下了键,则将按键存储在数组中,然后显示下一个刺激。
  5. 为此,我会使用Keypress,一个用于捕获输入的JS库。

    您首先想要定义您的刺激

    例如:

    var stimuli = ["Apple","Orange","Keira Knightley","Banana"];
    

    然后,您需要设置event个侦听器。这些将为您记录您的按键。

    var listener = new window.keypress.Listener();
    var results = [];
    listener.simple_combo("shift s", function() {
        results.push("You pressed shift and s");
    });
    

    然后你想要设置计时系统。我会使用setInterval()函数来增加主题所在的数组中的位置。

    var pos = -1; //Arrays start at 0, and you want to run this function to start.
    function nextStim() {
        pos = pos + 1;
        myDiv.innerHTML = stimuli[pos]
    }
    var results = [];
    listener.simple_combo("shift s", function() {
        results.push("The stimulus was: " + stimuli[pos] + "And you pressed Shift + S" );
    });
    setInterval(nextStim,5000);