当前位置: 移动技术网 > IT编程>开发语言>JavaScript > jQuery不兼容input的change事件问题解决过程

jQuery不兼容input的change事件问题解决过程

2019年03月27日  | 移动技术网IT编程  | 我要评论

最近开发一个项目,需要实现用户在web表单里的多个input框中输入数量后,立即自动计算加总各项输入的数量之和,并显示在指定的input框中,这个功能实现的原理是简单的,就是只需要在input的onchange事件中计算加总并将结果赋给指定的input框中即可实现,代码如下:

代码如下:


$("input.syxcost").change(function(){
   computereceivedsyxcost();
}
function computereceivedsyxcost(){  //计算加总
              var syxcost=0;
              $("input.syxcost").each(function(){
                 var cost=parsefloat($(this).val());
                 if (!isnan(cost))
                    syxcost=syxcost + cost;
              });
              $("#receivedsyxcost").val(syxcost); //显示最终结果
           }


 

原以为这样就解决了,在谷歌确实是ok的,但在ie 9中,却发现在input中输入数量后,并不会立即触发change事件,存在兼容问题,在网上搜了许多,也都说存在这个问题,没有办法,我就只有自己来依据实现情况来写,我的思路是:当input获取焦点时,就获取当前的value并存入该input的自定义的属性中(如:data-oval),然后在input失去焦点的时候,就获取当前的value与之前存在自定义的属性中的值是否相同,若不相同,则说明value被改变,就需要重新计算,否则忽略,实现代码如下:

 

代码如下:


$("input.syxcost").focus(function(){
                $(this).attr("data-oval",$(this).val()); //将当前值存入自定义属性
            }).blur(function(){
                var oldval=($(this).attr("data-oval")); //获取原值
                var newval=($(this).val()); //获取当前值
                if (oldval!=newval)
                {
                    computereceivedsyxcost(); //不相同则计算
                }
            });

经反复验证,在所有的浏览器下均显示正常,解决了兼容的问题!

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网