如何检测javascript文本字段中的shift-button / clear输入?

时间:2014-05-05 15:24:04

标签: javascript validation input textfield

我有一个文本字段,我正在检测每个按键,如下所示:

document.getElementById("postcardText").addEventListener('keyup', checkInput, false);

在我的checkInput-function中我只检查我希望用户添加的字母。到目前为止它工作得很好,问题是如果用户按下移位按钮,例如shift + A写入大写A检测到2个密钥,A加两次。 任何人都可以建议解决方法吗?

编辑: 这似乎可以完成这项工作:

var shiftKey=false;
$(document).keyup(function (e) {
    if (e.keyCode == 16) {
        //alert("Shift was pressed");
        shiftKey=true;
    } else{
      shiftKey=false;
      checkInput();
    }
});

然后在我的if语句中这样的

function checkInput(){
    if (character=="A" ||
        character=="B" &&
    shiftKey==false){
    //adding letter-image here
    }
}

我不得不将keydown更改为keyup,否则它不会立即检测到第一个字符,而是仅在按下下一个键时才会检测到。

3 个答案:

答案 0 :(得分:1)

来自你的评论:

  

基本上这是一台"机器"将输入文本转换为彩色图像。所以每个字母都有一个由它表示的图像。我希望用户在写作时已经看到它的外观。我在每个键盘上读取文本字段的数据,然后将最后一个字母作为图像添加到我的大图像中。但是班次按钮会扰乱事情...

每次在keyup上从头开始重建整个设计会不会太过分?每次收到一个keyup事件时,擦除当前图像,并遍历文本字段的每个字符以添加其图像。

$(document).keyup(function (e) {

    // Do whatever you need to do to clear the image… 

    var myText = $("#postcardText").val();
    for (var i = 0; i < myText.length; i++) {

        var thisChar = myText.charAt(i);

        // Add thisChar to the image…
        addLetter(thisChar);
    }
});

此方法的另一个好处是,您可以处理箭头键甚至删除操作,而无需为每种情况编写例外。

答案 1 :(得分:0)

您使用的是jQuery吗?如果是,您可以尝试使用以下方法拦截shift键:

$(document).keydown(function (e) {
    if (e.keyCode == 16) {
        alert("Shift was pressed");
    }
});

因此,只有当keyCode不是16时,您才能返回false或调用您的函数,请查看here

答案 2 :(得分:0)

试试这个,

if (character=="A" || character=="B"){
  if(shiftKey==false){
     //adding letter-image here
  }
}