如果输入的最后2个字符是/ c,那么执行此jquery

时间:2018-05-07 22:49:05

标签: jquery string

我正在尝试修改this example,但我很难在变量中获取最后2个字符,因此我可以看到用户是否输入了/c

var keys = [];
$('#target').keypress(function(e) {
    keys.unshift(e.which);
    $('#last')
           .prepend($('<li/>').text(String.fromCharCode(keys[0])))
           .children(':eq(2)').remove();
});

我无法弄清楚如何将这部分变成变量,以便我可以检查它

$('#last')
       .prepend($('<li/>').text(String.fromCharCode(keys[0])))
       .children(':eq(2)').remove();

我知道这是在<li>之前,但我需要将它存储在一个简单的变量中。

最终,当用户键入的最后2个字符为if时,我需要触发/c语句。

if (somevariable == '/c') {
    // do something
}

1 个答案:

答案 0 :(得分:2)

只需使用String.fromCharCode(parseInt(keys[0]))将其保存到字符串中并检查它是否与您的字符串匹配然后执行任何操作,然后检查长度是否为2然后重置字符串。

&#13;
&#13;
var keys = [];
var input = [];
var findString = '/c';

$('#target').on('keypress', function(e) {
  keys.unshift(e.keyCode || e.which);
  updateN();
});

function updateN() {

  //push into the input array
  input.push(String.fromCharCode(parseInt(keys[0])));

  //check if input is of valid length to be searched for string 
  if (input.length >= findString.length) {
    //if last 2 keys match the string to be found 
    var keyFound = (input[input.length - 2] + input[input.length - 1]) == findString;
    //if string found
    if (keyFound) {
      console.log("/c detected");
    }
    if (input.length > 20) {
      //reset the array but keep last 2 indexes to keep the track of the pressed keys
      input.splice(0, input.length - 2);
    }
  }
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input id="target">
&#13;
&#13;
&#13;

@Tim Down您必须过滤掉不可打印的密钥哪些密钥会产生按键事件因浏览器而异。例如,Firefox为大多数不可打印的键生成keypress个事件,jQuery将为大多数事件提供0的值,尽管有一些例外,例如退格,它产生的值为8还有其他变体,我建议提及unixpapa.com/js/key.html以获取完整的详细信息。 jQuery本身隐藏了很少的复杂性