仅允许带负值且仅有两位数的数字和小数点

时间:2017-01-11 06:46:50

标签: javascript html

我想将输入值限制为数字(包括-ve整数)并将小数限制为2位数。

接受:

22.33; -123.45; 0.22

拒绝:

-123.000123; --123.000123; -123-23.12; --23-1.00

我正在使用这个

<input id="restricted" type="text" class="form-control" placeholder="00.00" onkeypress="return isNumberKey(evt,this)"/>


function isNumberKey(evt, element) {
 var charCode = (evt.which) ? evt.which : event.keyCode
  if (charCode > 31 && (charCode < 48 || charCode > 57) && !(charCode == 46     || charcode == 8))
    return false;
  else {
   var len = $(element).val().length;
   var index = $(element).val().indexOf('.');
   if (index > 0 && charCode == 46) {
     return false;
   }
     if (index > 0) {
    var CharAfterdot = (len + 1) - index;
     if (CharAfterdot > 3) {
    return false;
  }
}

  }
  return true;
 }

我不希望它验证。我希望它不接受整数以外的限制,并在“。”后将其限制为2位数。

4 个答案:

答案 0 :(得分:0)

使用HTML5模式。

<form action="#">
<input type="text" pattern="[\d]+" title="Numbers">
<input type="Submit" value="Validate">
</form>

或直接的javascript变体:

var input_field = document.getElementById('the_id');

input_field.addEventListener('keyup', function() {
    var v = parseFloat(this.value);
    if (isNaN(v)) {
        this.value = '';
    } else {
        this.value = v.toFixed(2);
    }
});
<input id="the_id" placeholder="00.00" value="1234">

答案 1 :(得分:0)

应将keypress更改为keyup。我还更新了isNumberKey()代码

HTML

<input type="text">  

JS

function isNumberKey(value)    {
    console.log(value);
    var regex = /^[+-]?\d*\.?\d{0,2}$/;
    if(regex.test(value)){
       console.log("true");
       return true;
    }else{
       console.log("false");
       return false;
    }
}

$("input[type=text]").on('keyup', function(){
  if (!isNumberKey(this.value)){
     $(this).val(function(index, value){
        return value.substr(0, value.length - 1);
     });
  }
});

答案 2 :(得分:0)

  function isNumberKey(evt, element) {
  $('#restricted').bind("change paste keyup blur", function() {

    if(this.value.length == 1 && this.value == '-'){
      //do nothing
    }
    else{
      var retValu = testInput(this.value);

      if(retValu != '1'){
        try{
          this.value = this.value.substring(0, this.value.length - 1);
        }catch(e){

        }
      }
    }

  });
}

  
function testInput(inputValue)
{

  if (inputValue.match(/^-?[+]?[0-9]+([.][0-9]{1,2})?$/)){
    return 1;
  }
  else if(inputValue.match(/^-?[+]?[0-9]+([.])?$/)){
    return 1;
  }
  else{
    return 0;
  }

}

    testInput("22.33");
    testInput("-123.45");
    testInput("0.22");

    testInput("-123.000123");
    testInput("--123.000123");
    testInput("-123-23.12");
    testInput("--23-1.00");

答案 3 :(得分:0)

100%工作!!好好享受!!!并跟随像我们这样的其他人帮助!!

 <html>
     <head>
      <script>
      function replacePonto(){
        var input = document.getElementById('qtd');
        var ponto = input.value.split('.').length;
        var slash = input.value.split('-').length;
        if (ponto > 2)
                input.value=input.value.substr(0,(input.value.length)-1);

        if(slash > 2)
                input.value=input.value.substr(0,(input.value.length)-1);

        input.value=input.value.replace(/[^0-9.-]/,'');

        if (ponto ==2)
	input.value=input.value.substr(0,(input.value.indexOf('.')+3));

if(input.value == '.')
	input.value = "";
              }
      </script>
      </head>
      <body>
         <input type="text" id="qtd" maxlength="10" style="width:140px" onkeyup="return replacePonto()">
      </body>
    </html>