[超牛]只能输入数字的文本框,兼容IE7IE8等

demo地址:
只能输入数字的文本框



核心js代码:

/*
         * 只能输入正整数,不能有小数点
         *
         */
        onlyIntegerKeyUp = function (e) {
            if (e === undefined) {
                e = window.event;
            }
            var obj = e.srcElement ? e.srcElement : e.target;
            var pattern = /[^\d]/ig;
            var val = obj.value;
            if (pattern.test(val)) {
                var i = getCursortPosition(e);
                obj.value = val.replace(pattern, '');
                setCaretPosition(e, i);
            }
        };
        /************************************************
         * 获取光标位置
         *
         * @param ctrl
         * @returns {Number}
         */
        getCursortPosition = function (event) {// 获取光标位置函数
            if (event === undefined || event === null) {
                event = arguments.callee.caller.arguments[0] || window.event;
            }
            var obj = event.srcElement ? event.srcElement : event.target;
            var CaretPos = 0;   // IE Support
            if (document.selection) {
                obj.focus();
                var Sel = document.selection.createRange();
                Sel.moveStart('character', -obj.value.length);
                CaretPos = Sel.text.length;
            } else if (obj.selectionStart || obj.selectionStart == '0') {
                // Firefox support
                CaretPos = obj.selectionStart;
            }

            return (CaretPos);
        };

        /**********************************************
         * 设置光标位置
         *
         * @param ctrl
         * @returns {Number}
         */
        setCaretPosition = function (event, pos) {// 设置光标位置函数
            if (event === undefined || event === null) {
                event = arguments.callee.caller.arguments[0] || window.event;
            }
            var obj = event.srcElement ? event.srcElement : event.target;
            if (pos > 0) {
                pos = pos - 1;//因为把不匹配的字符删除之后,光标会往后移动一个位置
            }
            if (obj.setSelectionRange) {
                obj.focus();
                obj.setSelectionRange(pos, pos);
            } else if (obj.createTextRange) {
                var range = obj.createTextRange();
                range.collapse(true);
                range.moveEnd('character', pos);
                range.moveStart('character', pos);
                range.select();
            }
        };
        /***
         * [0-9]<br>
         *     12:ok;1.2:error
         * @param event
         * @returns {boolean}
         */
        onlyIntegerKeyPress = function onlyIntegerKeyPress(event) {
            event = event || window.event || arguments.callee.caller.arguments[0];
            //console.log(event);
            var charCode2;
            if ('charCode' in event) {//IE7 and IE8 no charCode
                charCode2 = event.charCode;
            } else {
                //console.log('no charCode');
                charCode2 = event.keyCode;
            }
            //console.log(charCode2);
            if (event.keyCode === 8/*back*/ || event.keyCode === 13/*Enter*/ || event.keyCode === 9/*Tab*/ || event.keyCode === 37/*<- */ || event.keyCode === 39/* ->*/) {
                return true;
            } else if (charCode2 < 48 || charCode2 > 57) {/*0-9*/
                event.returnValue = false;
                return false;
            } else {
                return true;
            }
        };

页面代码:

<body>
只能输入数字: <input type="text" style="ime-mode:disabled;" onkeyup="onlyIntegerKeyUp(event)"
               onKeyPress="return onlyIntegerKeyPress(event)"/><br>
</body>

页面截图:

注意:(1)在IE7,IE8中,事件对象event没有charCode 属性;
在事件处理方法中,返回false或者设置event.returnValue 的值为false,表示阻止该事件的默认行为

作者:黄威
主页:黄威的技术博客

时间: 2024-11-01 14:08:06

[超牛]只能输入数字的文本框,兼容IE7IE8等的相关文章

Javascript 实现只能输入数字的文本框

提示:您可以先修改部分代码再运行 请输入数字: 提示:您可以先修改部分代码再运行

文本框只能输入数字的实现方法(兼容IE火狐)_javascript技巧

文本框只能输入数字的实现方法(兼容IE火狐) <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta ht

文本框只能输入数字网页代码

 方法一.四事件组合完合可以实现文本框只能输入数字 <input type="text" onkeypress = 'return /^d$/.test(String.fromCharCode(event.keyCode))' oninput= 'this.value = this.value.replace(/D+/g, "")' onpropertychange='if(!/D+/.test(this.value)){return;};this.value

限制文本框只能输入数字||只能是数字和小数点||只能是整数和浮点数_javascript技巧

onlyNumber.html 测试代码: <html> <head> <script language="JavaScript" > function onlyNumber(obj){ //得到第一个字符是否为负号 var t = obj.value.charAt(0); //先把非数字的都替换掉,除了数字和. obj.value = obj.value.replace(/[^\d\.]/g,''); //必须保证第一个为数字而不是. obj.va

jquery限定文本框只能输入数字(整数和小数)_jquery

本文实例介绍了jquery限定文本框只能输入数字的详细代码,分享给大家供大家参考,具体内容如下 先来一段规定文本框只能够输入数字包括小数的jQuery代码: <!DOCTYPE html> <html> <head> <meta charset="gb2312"> <title></title> <script type="text/javascript" src="mytest

基于jQuery实现文本框只能输入数字(小数、整数)_jquery

在实际应用中,文本框中有时候只能够允许输入整数,但是有时候可能更为"博爱"一点,可以允许输入浮点数,下面就通过实例代码介绍一下如何利用jquery实现文本框只能输入小数,代码如下: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="author" content="http://www.jb51.net/

javascript只能输入数字和小数点的文本框

只能输入数字和小数点的文本框 Html代码 <html>   <head>   <meta http-equiv="content-Type" content="text/html;charset=gb2312">   </head>   <body>   <!--把下面代码加到<body>与</body>之间-->   只能输入数字和小数点的文本框:<input

jquery实现文本框只能输入数字

如下是例子的部分代码(2个方法都可以) <script type="text/javascript"> $(document).ready(function() { onlyNum("test"); } //文本框只能输入数字,不能输入小数点和字母 by john function onlyNum(id){ $("#"+id).keydown(function(event) { var keyCode = event.which; i

HTML 限制文本框只能输入数字

 限制文本框只能输入数字 <input onkeyup="if(isNaN(value))execCommand('undo')" onafterpaste="if(isNaN(value))execCommand('undo')"> <input name=txt1 onchange="if(/D/.test(this.value)){alert('只能输入数字');this.value='';}">