将数字输入限制在范围内

Limit number input to range

本文关键字:范围内 数字输入      更新时间:2023-09-26

我想将用户输入限制在特定范围内(-90到90)。数字可以是整数或十进制。默认值必须为0。我不想使用HTML5 min/max属性。

这是我的HTML:

<input type="number" value="0" />

这就是我尝试过的:

$('input').on('input', function () {
    var value = $(this).val();
    $(this).val(Math.max(Math.min(value, 90), -90));
});

这是有缺陷的,因为它不允许我擦除默认值(因此我不能为负数输入-,也不能为十进制数输入.)。

所以我最终做了这个:

$('input').on('input', function () {
    var value = $(this).val();
    if ((value !== '') && (value.indexOf('.') === -1)) {
        $(this).val(Math.max(Math.min(value, 90), -90));
    }
});

这更好,但现在的问题是,我可以输入超出我定义范围的90.1

建议?

JSFiddle演示

当值超出范围时,只考虑修改值。这可以让你包括小数等

$('input').on('input', function () {
    
    var value = this.value;
    
    if (value !== '') {
        value = parseFloat(value);
        
        if (value < -90)
            this.value = -90;
        else if (value > 90)
            this.value = 90;
    }
    
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="number" value="0" />