【问题标题】:jQuery reject certain characters inputjQuery拒绝某些字符输入
【发布时间】:2014-04-07 21:00:09
【问题描述】:

我正在制作一个系统,您可以在其中按一个键并更改文本框。我只想能够输入值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, /,则不要写在框中

【问题讨论】:

    标签: javascript jquery html input focus


    【解决方案1】:

    这可能会有所帮助:

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

    关键是调用e.preventDefault()

    您还拥有作为 e.target 发起的 keyup 事件的元素。

    HTH

    【讨论】:

      【解决方案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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-03-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多