zoukankan      html  css  js  c++  java
  • 文本框内容改变触发事件

    input 在IE中有onchange事件,但是这个事件所表现的效果不是我们想要的,它所表现的效果为:当input内的内容发现更改时,并不会触发你所指定的方法(函数),所以一般的人不用使用这个事件,而会使用,onpropertychange 这个事件,,在IE下是可行的。。但是在FF下面呢就不行了。。

    于是我从网上找到如下代码去解决FF下不行

    jQuery(function($) {
             if (navigator.userAgent.indexOf("MSIE") > 0) {
                  document.getElementById('txtABC').attachEvent("onpropertychange", txChange);
              }
              else if (navigator.userAgent.indexOf("Firefox") > 0) {
                  document.getElementById('txtABC').addEventListener("input", txChange2, false);          

              }
         })

    这个方法的原理就是先判断是哪种浏览器,然后使用它们自带的事件注册方法去注册事件。

    这个方法有个问题,如果你要兼容N个浏览器的话那你不要是写N个浏览器的注册事件吗?

    于是又一个解决的方法出现了,,

    它的原理很简答,就是监视键盘事件,每次获取键盘事件时,都会去判断是否与前一次内容是否相同,不相同就触发相关方法(函数)

    代码如下:

    var txtValue;
           
            ////////    预加载
            jQuery(function($) {

                txtValue = $("#txtABC").val();

                ////////    给txtbox绑定键盘事件
                $("#txtABC").bind("keydown", function() {
                    var currentValue = $(this).val();
                    if (currentValue != txtValue) {
                        TxtChange();

                        txtValue = currentValue;
                    }

                });

            });

            //////  目标选择框文本发生更改时
            function TxtChange() {
                alert('');          
            }

    因为大部分浏览器都支持,keydown事件,所以这么写可以兼容大部分浏览器。。

  • 相关阅读:
    java使用Websocket获取HttpSession出现的问题与解决
    java 静态导入 小结
    【编程思想笔记】内部类的初始化
    【搬运】Tea算法Java实现工具类
    OBS studio最新版配置鉴权推流
    debian 9 双显卡安装NVIDIA显卡驱动
    【学习笔记】Java finalize()的使用
    【学习笔记】js下拉刷新、上拉加载 mescroll框架的使用
    [随笔] 简单操作解决Google chrome颜色显示不正常的情况
    【自制工具类】struts返回json数据包装格式类
  • 原文地址:https://www.cnblogs.com/glorysword/p/onInputContentChange.html
Copyright © 2011-2022 走看看