JS onkeydown控制HTML Input 只录入浮点数值

本文介绍了一段JavaScript代码,用于实现输入框只允许输入浮点数的功能,包括正负号、小数点和数字的限制。通过事件监听和正则表达式,确保输入的有效性和格式正确。

<script type="text/javascript">

 

        //获取当前光标位置

        function getCursortPosition(ctrl) {

            var CaretPos = 0;   // IE Support

            if (document.selection) {

                ctrl.focus();

                var Sel = document.selection.createRange();

                Sel.moveStart('character', -ctrl.value.length);

                CaretPos = Sel.text.length;

            }

                // Firefox support

            else if (ctrl.selectionStart || ctrl.selectionStart == '0')

                CaretPos = ctrl.selectionStart;

            return (CaretPos);

        }

 

        //只录入浮点数

        function onlyNumbers(e) {

            var keynum

            var keychar

            var numcheck

 

            if (window.event) // IE

            {

                keynum = e.keyCode

            }

            else if (e.which) // Netscape/Firefox/Opera

            {

                keynum = e.which

            }

 

            //Backspace Left Right Delete Key 直接放过

            if (keynum == 8 || keynum == 37               

                || keynum == 39 || keynum == 46)

            {

                return true;

            }

 

            //减号

            var minusCharCode = 189;

            //点

            var pointCharCode = 190;

 

            var inputCtrl = document.getElementById("mc");

            var index = getCursortPosition(inputCtrl);

            var oriVal = inputCtrl.value;

 

            if (keynum == pointCharCode)

            {

                return oriVal.indexOf(".") == -1;

            }

           

            if (keynum == minusCharCode)

            {

                if (oriVal.indexOf("-") > -1)

                    return false;

 

                return  index == 0

            }

           

            keychar = String.fromCharCode(keynum)           

            var newVal = oriVal.substr(0, index) + keychar + oriVal.substr(index, oriVal.length - index);           

            console.log(newVal)           

            var pattern = /^([-]){0,1}([0-9]){1,}([.]){0,1}([0-9]){0,}$/;

            return pattern.test(newVal);           

        }

    </script>

 

调用方法:

<div id="wrap">         数值:<input id="mc" onkeydown="return onlyNumbers(window.event)"/>

    </div>

 

转载于:https://www.cnblogs.com/jason_chen/p/5113201.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值