• 总结一下 input propertychange


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

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

            即时搜索的方案:

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

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

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

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

            

  • 相关阅读:
    【Feature】使用Feature导入WebPart
    千万别动SharePoint数据库
    【PS】使用PowerShell创建WinForm程序(转载)
    【WebServices】调用 SharePoint WebServices 注意事项
    【转载】十一种Web网站程序性能测试工具介绍
    【List Event Receivers】区分自定义“事件处理”功能的两种部署方式
    [转] SharePoint Server 2007 页面模型
    第一天 从此在这记录学习C++的点点滴滴
    《C++ Primer》第7章 函数
    Emacs 自动填充头文件
  • 原文地址:https://www.cnblogs.com/youlanlan/p/4330255.html
Copyright © 2020-2023  润新知