JavaScript中用于数字验证的匹配功能问题

时间:2018-11-21 09:56:01

标签: javascript jquery

我编写了以下函数,以仅限制2个数字(小于100)的数字。

第一部分检查特殊的章程和信件。我陷入else部分。

现在,我尝试限制仅2位数字(无小数)。但是,以下代码中的逻辑不起作用。我不允许在input type =number中使用HTML。 html输入类型是text

 $(".allownumericTwo").on("input", function (evt) {
     var charCode = (evt.which) ? evt.which : event.keyCode
     if (charCode > 31 && (charCode < 48 || charCode > 57) && charCode != 46)
         return false;
     else {
         $(this).val($(this).val().match(\d{0,2});
     }
     return true;
});

3 个答案:

答案 0 :(得分:0)

input event不是cancelable。它也没有键码的值。相反,您可以做的是检查该值是否有效,如果没有,将其重置为以前的值。您还需要将正则表达式模式放在斜杠之间,即/^\d{0,2}$/

例如

var oldValue = $(".allownumericTwo").val();
$(".allownumericTwo").on("input", function(evt) {
  if (this.value.length > 0 && this.value.match(/^\d{0,2}$/) == null) {
    this.value = oldValue;
  } else {
    oldValue = this.value;
  }
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input class='allownumericTwo'>

答案 1 :(得分:-1)

您可以使用isNumeric()

if($(this).val().length < 3)
{
    if($.isNumeric($(this).val())){
      //do something
    }
}

答案 2 :(得分:-1)

这可能会有所帮助。 请记住,匹配返回一个数组。

function printFirstTwoNumbers(val) {
  var regex = /^\d{0,2}/g;;
  console.log(val.match(regex));
  return true;
}
        
        
printFirstTwoNumbers('288.80');
printFirstTwoNumbers('2.80');
printFirstTwoNumbers('29898.80');
printFirstTwoNumbers('300');