jQuery拒绝某些字符输入

时间:2014-04-07 21:00:10

标签: javascript jquery html input focus

我正在制作一个按键的系统,它会更改文本框。我只希望能够设置值X, x, E, e, / 我当前的jQuery代码是

$('.today').keyup(function(e) {
  var self = $(this);
  var currentInput = self.data('number');
  var next = $(currentInput + 1);
  var previous = $(currentInput - 1);
  var keyCode = e.keyCode || e.which;
  var num = self.data('number') + 1;
  var nom = self.data('number') - 1;
  if(('input.today[data-number="' + num +'"]').length && keyCode === 40)
    $('input.today[data-number="' + num +'"]').focus()
  else if(('input.today[data-number="' + nom +'"]').length && keyCode === 38)
    $('input.today[data-number="' + nom +'"]').focus();
  else if(('input.today[data-number="' + num +'"]').length && self.val().length == self.attr('size')) {
    $('input.today[data-number="' + num +'"]').focus();
  }
});

如果密钥是其中之一,我只希望聚焦框移动:X, x, E, e, /, UP, DOWN, LEFT, RIGHT。如果值不是X, x, E, e, /,那么不要在框中写入

2 个答案:

答案 0 :(得分:2)

您可以检查按下的键以确定事件的进行方式。如果您不想在某些按键上显示文字,那么您可以从处理程序return false或致电e.preventDefault()

if ($.inArray(e.keyCode, [69, 88, 191]) === -1) { // e, x, / respectively
    e.preventDefault(); // don't print the character
}

您可以在此处获取JavaScript密钥代码列表:Key Codes

答案 1 :(得分:2)

这可能会有所帮助:

$('.today').keyup(function(e) {
  if(~[38, 39, 40, ...].indexOf(e.keyCode || e.which)) {
    e.preventDefault();
    return;
  }
  ...
}

调用e.preventDefault()的密钥。

您还拥有keyup事件源自e.target的元素。

HTH