选择时的输入字段值,不能覆盖

时间:2019-07-29 21:32:12

标签: javascript jquery validation percentage input-field

我通过这些模式验证输入字段:

  • 仅正数
  • 只有一个。
  • 仅数字值
  • 。后仅两位小数。
  • 仅0到100之间的数字
  • 将输入限制为5个字符(0 ... 1.1 ... 10.2 ... 33.23 ... 99.99或100)

这些验证符合我的代码要求。甚至还有更好的方法来编写此验证代码。但是无论如何-我现在无法解决的问题是-如果我输入一个值,例如99.99或100或23.23,并且我想通过使用鼠标选择/标记整个值来再次更改该值-它不会改变!如果我写2.33,然后用鼠标选择/标记整个值,它将改变。因此,看来我正面临一种“假”状态,该状态不允许我输入其他数字,现在我找不到一种检测到我在输入字段中选择了某项内容的事件。

我准备了JSFIDDLE代码-我在哪里感到困惑?

ps:我也知道,也许我的按键事件正在覆盖错误/真实状态,之后我试图解决这个问题。

非常感谢! 最好的问候

   $('#inpNumber').on('input', function() {
  var inpVal = $(this).val();

  if ( inpVal > 100 || inpVal < 0 || !inpVal) {
    $( "#inpNumber" ).removeClass( "is-valid" );
    $( "#inpNumber" ).addClass( "is-invalid" );
  } else {
    $( "#inpNumber" ).removeClass( "is-invalid" );
    $( "#inpNumber" ).addClass( "is-valid" );
  }
});

$('#inpNumber').keypress(function (event) {
  var input = $(this).val();

  if ((input.indexOf('.') != -1) && (input.substring(input.indexOf('.')).length > 2)) {
    event.preventDefault();
    return false;
  }
  return isNumberRegChecked(event, this);
  return isNumber(event, this);
});

function isNumberRegChecked( evt, element ) {
  var inpVal = $(element).val();
  // ^(\d\d?(\.\d\d?)?|100(\.00?)?)$ also possible
  var checkShare = /^(\d{0,2}(\.\d{0,2})?)$/.test(inpVal);
  if (checkShare == false)
    return false;
    return true;
}

// THE SCRIPT THAT CHECKS IF THE KEY PRESSED IS A NUMERIC OR DECIMAL VALUE.
function isNumber( evt, element ) {
  var charCode = (evt.which) ? evt.which : event.keyCode;
  if ((charCode != 46 || $(element).val().indexOf('.') != -1) &&      // “.” CHECK DOT, AND ONLY ONE.
        (charCode < 48 || charCode > 57))
        return false;
        return true;
}

0 个答案:

没有答案