Jquery验证:带有正数/负数的浮点数,带有6位2位小数

时间:2016-07-27 11:50:00

标签: javascript jquery

我试图将我的文本字段限制为带有6个数字和2个十进制限制的浮点数。

例123456.12,222222.22。

我需要在小数点前最多包含6位数字。      数字可以是正数或负数。

我试过了:https://jsfiddle.net/wuL34dto/

$('.number').keypress(function(event) {
var $this = $(this);
if ((event.which != 46 || $this.val().indexOf('.') != -1) &&
   ((event.which < 48 || event.which > 57) &&
   (event.which != 0 && event.which != 8))) {
       event.preventDefault();
}

var text = $(this).val();
if ((event.which == 46) && (text.indexOf('.') == -1)) {
    setTimeout(function() {
        if ($this.val().substring($this.val().indexOf('.')).length > 3) {
            $this.val($this.val().substring(0, $this.val().indexOf('.') + 3));
        }
    }, 1);
}

if ((text.indexOf('.') != -1) &&
    (text.substring(text.indexOf('.')).length > 2) &&
    (event.which != 0 && event.which != 8) &&
    ($(this)[0].selectionStart >= text.length - 2)) {
        event.preventDefault();
}      
});

提前致谢。

2 个答案:

答案 0 :(得分:0)

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="http://www.jasny.net/bootstrap/dist/js/jasny-bootstrap.min.js"></script>

<input class="inputmask">

<script>
$('.inputmask').inputmask({
  mask: '999999.99'
})
</script>

答案 1 :(得分:0)

text.match(^[0-9]{6}(\.[0-9]{1,2})?$).length > 0

未测试此模式

或添加jquery函数

$.fn.extend({
    checkinput:function() {
      return text.match(^[0-9]{6}(\.[0-9]{1,2})?$).length > 0;
});

用法:

if(text.checkinput())