JS,文本框只能输入整数或两位小数的整数

本文介绍如何使用JavaScript实现文本框只能输入整数或最多包含两位小数的整数,通过正则表达式和事件监听来确保输入的有效性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

<input id="dtrunSpeed" name="dtrunSpeed" type="text" style="width: 220px;"
                                               required="true" class="easyui-validatebox" οnkeyup="onNumValid(this);" οnblur="onNumValidBlur(this,this.value);"/>


<script type="text/javascript">
    function onNumValid(obj){
        obj.value = obj.value.replace(/[^\d.]/g,""); //清除"数字"和"."以外的字符
        obj.value = obj.value.replace(/^\./g,""); //验证第一个字符是数字而不是
        obj.value = obj.value.replace(/\.{2,}/g,"."); //只保留第一个. 清除多余的
        obj.value = obj.value.replace(".","$#$").replace(/\./g,"").replace("$#$",".");
        obj.value = obj.value.replace(/^(\-)*(\d+)\.(\d\d).*$/,'$1$2.$3'); //只能输入两个小数
    }

    function onNumValidBlur(obj,val){
        var indexs1 = val.indexOf('.');
        if(indexs1 == -1){//整数
            if(val.charAt(0) == 0){//以0开始,处理000、001非法情况
                var k = 0;
                for(var i = 0;i < val.length; i++){
                    k = k + 1;
                    if(val.charAt(i) != 0){
                        val = val.substring(i,val.length);
                        obj.value = val;
                        return;
                    }
                }
                //alert(k);
                if(k == val.length){
                    val = 0;
                    obj.value = val;
                    return;
                }
            }
        }else{//小数
            if(val.charAt(val.length-1) == '.'){//处理以“.”结尾的非法情况
                val = val.substring(0,val.length-1);
            }
            if(val.charAt(0) == 0 && val.charAt(1) != '.'){
                var k = 0;
                for(var i = 0;i < val.length; i++){
                    k = k + 1;
                    if(val.charAt(i) != 0){
                        if(val.charAt(i) == '.'){//以0开始,处理00.1、000.1非法情况
                            val = val.substring(i-1,val.length);
                            obj.value = val;
                            return;
                        }else{//以0开始,处理01.1、001.1非法情况
                            val = val.substring(i,val.length);
                            obj.value = val;
                            return;
                        }

                    }
                }
                if(k == val.length){
                    val = 0;
                    obj.value = val;
                    return;
                }
            }else{
                obj.value = val;
                return;
            }
        }
    }

</script>


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值