• 总结一下 input propertychange


    标签:

    最近做的一些项目,经常遇到输入框检查的需求,最常见的是即时搜索,今天好好小结一下。

            ==================================================================

            即时搜索的方案:3个

            (1)change事件    饿。。。。。   触发事件必须满足两个条件:

                a)当前对象属性改变,并且是由键盘或鼠标事件激发的(脚本触发无效)
                b)当前对象失去焦点(onblur)
     

            (2)keypress  恩,还好。。。。。就是能监听键盘事件,鼠标复制黏贴操作他就无能为力的赶脚了

                keyup

            (3)propertychange(ie)和input事件

               +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

                input是标准的浏览器事件,一般应用于input元素,当input的value发生变化就会发生,无论是键盘输入还是鼠标

                黏贴的改变都能及时监听到变化

                propertychange,只要当前对象属性发生改变。(IE专属的)

                ======

                  oninput 和 onpropertychange 这两个事件在 IE9 中都有个小BUG,

                  那就是通过右键菜单菜单中的 剪切 和 删除 命令删除内容的时候不会触发,

                  而 IE 其他版本都是正常的,目前还没有很好的解决方案。

                =======

                不过 input & propertychange 仍然是即时搜索比较好的方案

            ==========================================================================

            实践了一下

            //格式化显示卡号

            var cnAdvanceChangeHandle = function(e){

              var value = $(this).val();
                $(this).val(format(value, 4, 19));

            };

            //格式化显示卡号,ie处理

            function changeHandle(target, value){

              $(target).val(value);

            }

            //step参数是设置卡号每隔几个数字空一格,contrLen是设置只能输入的字符个数

            var cardNoChangeHandle = function(step, contrLen){

              //中间变量,保存input的值和当前值比较,不相同才要进行格式化处理

              //避免内存溢出异常

              var tempValue;

              return function(e){

                var value = $(this).val();

                if(value != tempValue){

                  value = format(value, step, contrLen);

                  tempValue = value;

                  changeHandle(this, value);

                }

              };

            };

            var cnHandle = cnChangeHandle(4, 19);

            //判断浏览器版本,是ie6,7,8

            !$.support.leadingWhitespace && $(".card-no").bind("propertychange", cnHandle );

            //其他高级浏览器

            $(document).delegate(".card-no", "input", cnAdvanceChangeHandle);

            

            eg:

            技术分享

    此文出处:http://www.mamicode.com/info-detail-511228.html

  • 相关阅读:
    Nbear讲解 之核心类CodeGenerator
    计算字符串显示的像素
    C# 加密算法[汇总]
    索引器的本质
    Excel[.xls|.xlsx|.csv] 导入 导出
    Spring.Net Ioc 实例
    反射中 BindingFlags标识
    C# 图片操作 常用方法 总结
    iTextSharp 生成pdf Form 实例
    玩转 Route
  • 原文地址:https://www.cnblogs.com/mmzuo-798/p/5967309.html
Copyright © 2020-2023  润新知