不允许在输入时达到9999以上?

时间:2018-04-05 17:02:26

标签: javascript jquery

$(document).on('keyup keydown',function(key){

    if(key.which >= 48 && key.which <= 57 && $('#sell').val() >= 9999 ) {
        return false;
    }
    else {
        if(key.which >= 48 && key.which <= 57 && $('#sell').val() <= 9999 ) {
            return true;
        }
    }
});

基本上我想做的是防止某人在输入时达到高于9999的程度。

但问题是,如果他们键入&#34; 55555&#34;它会经历。

他们无法输入任何高于此值并且可以删除它,但我不希望它们高于9999。

有没有人有解决方案?

编辑:

如果检测到更高的数字,我还需要以某种方式阻止输入工作。

3 个答案:

答案 0 :(得分:0)

您可以尝试这样的事情:

let sell = $('#sell');
let lastVal = 0;

sell.on('keyup keydown', function(key) {
  let cc = key.which;
  return (cc <= 57 && cc !== 32);
});

sell.on('input', function(evt) {
  const newVal = sell.val();

  if (newVal < 0 || newVal > 9999) {
    sell.val(lastVal);
  }
  else {
    lastVal = newVal;
  }
});

请注意,这仅捕获输入本身的关键事件,而不是整个文档。虽然这限制了用户输入数字(允许使用48以下的字符(空格除外),因为这些是箭头键和退格键),如果您想允许用户执行复制和粘贴等操作,则需要做更多的工作。 / p>

未在关键事件处理程序中测试输入的val()的原因是时间问题:关键事件不会更改输入字段的值和关键字事件在价值更新之后出现并且为时已晚,无法阻止价值变化。

这段代码的作用是让值暂时超出范围,但在发生这种情况时立即将其重置为最后一个有效值。

此处的Plunker:http://plnkr.co/edit/xsVQG1EzsDLMt8POCJUX?p=preview

答案 1 :(得分:0)

试试这个:

 
 var lastVal;

  $("#sell").on('keydown', function(e){ 
      if(e.which === 8){ // allow backspace
          return;
      } else if((e.which < 48 || e.which > 57) && (e.which < 96 || e.which > 105) ) { //only allow numbers & num pad numbers
          return false;
      } 
      if(e.target.value <= 9999) lastVal = e.target.value; //prevent key holding
  });
  
  $("#sell").on('keyup', function(e){ 
      if(e.target.value > 9999){
         e.target.value = lastVal;
         return false;
      }
  });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text" id=sell />

答案 2 :(得分:-1)

在HTML中使最大长度等于4并使用JS强制整数类型,在输入上放置max以防止高于9999 ...或者手动完成所有操作。由您决定

使用JS ... on keydown:剥离非整数

if($("#inputID").val().length > 4){ KILL EXTRA LETTERS } 

完成后。

If ($("#inputID").val() > 9999){ $("#inputID").val(9999); }

请记住,如果这是一个表单来验证服务器端的答案,那么客户端就无法覆盖HTML和JS检查。