如何在jquery中仅允许输入数字字段中的非十进制正整数?

时间:2018-01-15 10:16:53

标签: javascript jquery html

含义:0,01,0.01,a, - 不允许

我尝试使用这个jquery,但它仍允许我输入0,02,1.2等

$(document).on('keyup keypress', '.numeric-only', function() {
    var aValue = $(this).val();
    if ($.isNumeric(aValue) === false) {
        $(this).val(aValue.slice(1, -1));
    }
});

HTML

<div class="">
    <input type="number" class="form-control quan numeric-only" min="1" step="1" minlength="1" value="'.$qty.'"/>
</div>

我已经设法用php验证输入,但我也想用jquery验证它

1 个答案:

答案 0 :(得分:0)

您可以使用正则表达式替换不是数字的字符:

$('input').keyup(function() {
    var $th = $(this);
    var onlyNumbers = $th.val().replace(/[^0-9]/g, function(str) { return ''; } );
    var intValue = parseInt(onlyNumbers);
    if(intValue) {
        $th.val(intValue);
    } else {
        $th.val(0);
    }
});

https://jsfiddle.net/f68yxfho/1/

更新:解析为int以防止左对齐,如@casraf评论