文本框只允许十进制数,删除和退格

时间:2015-06-18 05:31:04

标签: javascript jquery html

我有一个适用于十进制数的代码,只允许小数点后两位数。我的问题是如何将代码修改为:

  1. 允许退格并删除和
  2. 如何使代码动态化,使其不使用id属性,而是在html上传递方法中的元素,并在javascript / jquery中接受并使用该元素
  3. 这是我的代码:

    
    
    function isNumberKey(evt, element) {
      var charCode = (evt.which) ? evt.which : event.keyCode
      if (charCode > 31 && (charCode < 48 || charCode > 57))
        return false;
      else {
        var len = $('#rate').val().length;
        var index = $('#rate').val().indexOf('.');
    
        if (index > 0 && charCode == 46) {
          return false;
        }
        if (index > 0) {
          var CharAfterdot = (len + 1) - index;
          if (CharAfterdot > 3) {
            return false;
          }
        }
    
      }
      return true;
    }
    &#13;
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <input type="number" class="form-control" id="rate" name="rate" placeholder="Billing Rate" required onkeypress="return isNumberKey(event,this)">
    &#13;
    &#13;
    &#13;

2 个答案:

答案 0 :(得分:0)

在您的textbox中添加一个班级,比如说number这里和下面的代码将为您完成:

<强> DEMO

$('.number').on('keypress',function (event) {
    if ((event.which != 46 || $(this).val().indexOf('.') != -1) && (event.which < 48 || event.which > 57)) {
        event.preventDefault();
    }
    var text = $(this).val();
    if ((text.indexOf('.') != -1) && (text.substring(text.indexOf('.')).length > 2)) {
        event.preventDefault();
    }
});
  

注意:您的代码不允许在文本框中输入.

答案 1 :(得分:0)

我找到了解决方案。在这里添加代码给那些与我有相同要求的人。

/*
 *  Function to allow decimal numbers to be entered in the text box
 *   - allows integers, backspace and delete
 *   - does not allow alphabets
 *   - allows only one decimal point
 *   - allows only two digits after decimal point
 */
function isNumberKey(evt, element) {
  var charCode = (evt.which) ? evt.which : window.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;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="number" class="form-control" id="rate" name="rate" placeholder="Billing Rate" required onkeypress="return isNumberKey(event,this)">

感谢。