首页 > 解决方案 > jQuery 只有数字,只有 2 位小数,只有最大值

问题描述

我一直在尝试为输入创建验证函数,以仅允许带两个小数点的数字和最大值 99999999.99。

这是我迄今为止尝试过的,但似乎没有奏效。

$('#TXTCOST').keypress(function (event) {
        if ((event.which != 46 || $(this).val().indexOf('.') != -1) && (event.which < 48 || event.which > 57)) {
            event.preventDefault();
        }
        var input = $(this).val();
        if ((input.indexOf('.') != -1) && (input.substring(input.indexOf('.')).length > 2)) {
            event.preventDefault();
        }
        var arr = input.split('.');
        if (arr.length == 1 && parseFloat(arr[0]) >= 99999999) {
            event.preventDefault();
        }
    });
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input type="text" id="TXTCOST"/>

标签: javascripthtmljquerycssjquery-ui

解决方案


试试这样。

$('#TXTCOST').keypress(function (event) {
        if ((event.which != 46 || $(this).val().indexOf('.') != -1) && (event.which < 48 || event.which > 57)) {
            event.preventDefault();
        }
        else{
            
             var input = $(this).val();
             if ((input.indexOf('.') != -1) && (input.substring(input.indexOf('.')).length > 2)) {
                 event.preventDefault();
             }
             var arr = (input+String.fromCharCode(event.keyCode)).split('.');
             if (arr.length == 1 && parseFloat(arr[0]) > 99999999) {
                 event.preventDefault();
             }
        }
        
    });
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input type="text" id="TXTCOST"/>

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input type="text" id="TXTCOST"/>

推荐阅读