zoukankan      html  css  js  c++  java
  • 限制文本框的输入(兼容FF,IE)

    <div>

    <span>只允许输入1到50</span> <br>

    <input id="multiple_num" value="1">

    </div>

    <script>
        var doc = document;
        /**** 事件处理机  start ****/
        var EventUtil = {
            //注册
            addHandler: function(element, type, handler) {
                if (!element) return;
                if (element.addEventListener) {
                    element.addEventListener(type, handler, false);
                } else if (element.attachEvent) {
                    element.attachEvent("on" + type, handler);
                } else {
                    element["on" + type] = handler;
                }
            },
            //移除注册
            removeHandler: function(element, type, handler) {
                if (!element) return;
                if (element.removeEventListener) {
                    element.removeEventListener(type, handler, false);
                } else if (element.detachEvent) {
                    element.detachEvent("on" + type, handler);
                } else {
                    element["on" + type] = null;
                }
            }
    };
        /*** 只允许输入数字处理函数 -- start --**/
      var multiple_handle = function() {
             var multiElement = doc.getElementById("multiple_num");
            if (!multiElement) {  //如果元素不存在,退出
                return;
            }
            var type = "input";  //默认认为是input ,Firefox浏览器
            if (!!document.all && navigator.userAgent.indexOf('opera') === -1) {
                type = "propertychange"; //如果为IE 则为propertychange事件
            }
            var meValue = multiElement.value;  //取得input的值
             //进行值判断前先移除注册事件,因为IE的propertychange 只要文本框里的属性发生变化
             // propertychange就会触发。导致死循环;先移除事件,处理完后再绑定事件
            EventUtil.removeHandler(multiElement, type, multiple_handle);
            var reg = /^[1-4]\d{1}$|^50$|^[1-9]$/;
            if (!reg.test(meValue)) {
                if (parseFloat(meValue) > 50) {  //大于50则认为是50
                    multiElement.value = 50;
                }
                else {
                    multiElement.value = multiElement.value.slice(0, -1); //如果输入了非数字。则删除当前的输入
                }
            }
              //处理完后再绑定事件
            EventUtil.addHandler(multiElement, type, multiple_handle);
        }
        /* -end- **/

        /** 注册事件 IE 为propertychange ,FF 为 input**/
        EventUtil.addHandler(doc.getElementById("multiple_num"), "propertychange", multiple_handle);
        EventUtil.addHandler(doc.getElementById("multiple_num"), "input", multiple_handle);
      </script>

  • 相关阅读:
    Linux入门
    Linux和VMware
    vue中select的使用以及select设置默认选中
    Django ModelFrom组件
    Django登录(含随机生成图片验证码)注册实例
    Django组件---Django请求生命周期和中间件
    Python3之使用Crypto
    ORM大结局
    ORM多表查询下
    Pycharn破解补丁激活
  • 原文地址:https://www.cnblogs.com/chentao5211314/p/2006802.html
Copyright © 2011-2022 走看看