zoukankan      html  css  js  c++  java
  • JS onkeydown控制HTML Input 只录入浮点数值

    <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>

  • 相关阅读:
    讲清楚之 javascript 参数传值
    JS+CSS3 360度全景图插件
    一些个人感觉很不错的特效
    从ES6重新认识JavaScript设计模式(三): 建造者模式
    动态监听输入框值的变化
    React Native基础&入门教程:调试React Native应用的一小步
    这儿有一个使你网页性能提升10倍的工具
    业务连续性实战
    strong and weak 强引用和弱引用的差别
    Codeforces Round #254 (Div. 2):B. DZY Loves Chemistry
  • 原文地址:https://www.cnblogs.com/jason_chen/p/5113201.html
Copyright © 2011-2022 走看看