0

如何限制使用 jquery 键盘的输入中的字符数?

HTML

<input id="num-input" type="text" maxlength="3" disabled>

查询

var $numInput;

$(function() {
  initKeyboard($('#numeric-keyboard'), $('#num-input'));

  $('#num-input').on('keydown', function(e) {
    $('#event').text('key: '+e.keyCode);
  });

  $('#back').on('click', onBackBtn);
  $('#forward').on('click', onForwardBtn);
});

function onBackBtn() {
   $('input').first().focus(); 
}

function onForwardBtn() {
   $('input').last().focus(); 
}

function initKeyboard($keyboard, $input) {
  $numInput = $input;

   $keyboard.on('click', '.key', onKeyPress); 
}

function onKeyPress(e) {
  var keyValue = $(this).text();

  if(keyValue.toLowerCase() === 'delete') {
     keyValue = 8; 
  } else if(keyValue === '') {
     return; 
  } else {
     keyValue = keyValue.charCodeAt(0); 
  }

  var e = $.Event("keydown");
  e.which = keyValue;
  e.keyCode = keyValue;

  $numInput.trigger(e);

  if(keyValue !== 8) {
    $numInput.val( $numInput.val() + $(this).text() );
  } else {
    $numInput.val( $numInput.val().slice(0, -1) );
  }
}

maxlenght 被忽略,我尝试$numInput.val( $numInput.val() + $(this).text() );使用 var max=3; 将 if 子句添加到这部分代码中 但再次没有运气。

我还尝试使用此代码脚本来限制该输入的字符数,但 jquery 再次超越它并继续添加字符。

我需要为它设置 3 个字符的限制。

任何想法?

4

1 回答 1

0

#num-input被禁用,也许 maxlength 需要在#numeric-keyboard字段中设置?

于 2020-06-01T08:20:05.337 回答