【问题标题】:simple javascript keystroke count简单的 javascript 击键计数
【发布时间】:2012-08-24 14:23:56
【问题描述】:

我正在开展一项在线研究/调查,我需要计算参与者的击键次数。我要求他们在文本字段中输入 lrlrlrlrlrlrl... 以模拟步行。事实证明,许多参与者(正如在任务上花费的时间所证明的那样)正在复制和粘贴。

我需要一些可以计算击键次数的东西,这样我就可以识别出按要求完成任务的参与者。这项研究是在 Coldfusion 中编程的,我正在考虑某种 javascript/onkeydown/隐藏文件字段组合,但我并不是真正的程序员。

任何帮助将不胜感激。谢谢。

【问题讨论】:

  • 您可以使用 jquery 注册 keyup 事件并计算该事件引发的次数,这样您就可以知道按下了多少键。

标签: javascript jquery count keystroke onkeydown


【解决方案1】:

http://jsfiddle.net/kBJGM/

HTML:

<input type="text" class="nopaste"/>
<input type="text" id="countstroke"/>
<span id="count"></span>​

Javascript:

var strokeCount = 0;

$(function(){

    $(".nopaste").bind("copy paste", function(e){
        e.preventDefault();
    });

    $("#countstroke").keyup(function(){
        $("#count").text("Count: " + (++strokeCount));
    });
});​

如果你想更进一步,你可以强制只注册 L 和 R 键 (http://jsfiddle.net/kBJGM/5/):

$("#restrictivecount").keypress(function(e){
    var seq = rstrokeCount % 2;
    var allow = true;
    switch(e.keyCode){
        case 76:
        case 108: // L or l
            if (seq == 1) allow = false;
        break;
        case 82:
        case 114: // R or r
            if (seq == 0) allow = false;
        break;               
        default:
            allow = false;
        break;               
    }

    if (allow)
        $("#rcount").text("Count: " + (++rstrokeCount));
    else
        e.preventDefault();
});

【讨论】:

  • 这是解决您问题的两种可能方法。第一个防止复制/粘贴。第二个答案计算击键,但它们仍然可以复制/粘贴。
【解决方案2】:
var keyPressCount = 0;

$(document).on("keydown",function(){
   keyPressCount++;
});

看看这个fiddle

【讨论】:

  • 谢谢!另一个愚蠢的问题,但是我如何将它放入可以传递给数据库的表单变量中?
【解决方案3】:
count=0;

$(document).bind('keydown', function(event){
    var keyCode = event.keyCode;
    switch(keyCode){
        case 39:
            alert('Right arrow was pressed');
            count++;
            break;
        case 37:
            alert('Left arrow was pressed');
            count++;
            break;
    }
});

您必须拥有 jQuery 库才能完成这项工作。

【讨论】:

  • bind 是 jQuery 的一个函数
  • 是的,它是一个方法或函数,而不是你写的jQuery插件。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-30
  • 1970-01-01
  • 1970-01-01
  • 2011-11-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多