博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
关于解决JQUERY对INPUT元素Change事件不兼容的问题
阅读量:6232 次
发布时间:2019-06-21

本文共 1224 字,大约阅读时间需要 4 分钟。

最近开发一个项目,需要实现用户在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(); //不相同则计算                }            });

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

原文出自我的个人网站:

转载地址:http://djtna.baihongyu.com/

你可能感兴趣的文章
farpoint合计列不参与排序实现方法
查看>>
嵌入式Linux C语言基础——ARM Linux内核常见数据结构
查看>>
原理剖析(第 006 篇)Semaphore工作原理分析
查看>>
Java基础查漏补缺:(开篇)为什么要在即将找工作的时候还在看Java基础
查看>>
VXWORKS关于任务创建的几个函数概述
查看>>
破解candy crush过程
查看>>
corosync+pacemaker+drbd构建web高可用集群
查看>>
年计划,技术儿告诉你怎么做?
查看>>
VCT-Virtual Cable Test-虚拟电缆检测
查看>>
Java ibatis调用存储过程出现阻塞
查看>>
例解三层交换原理
查看>>
java-第十一章-类的无参方法-实现菜单的级联效果
查看>>
如何检测集群中每台主机的状态
查看>>
时针、分针在一昼夜 24 小时内重合多少次?
查看>>
PHP 5 常量
查看>>
第44讲:Scala中View Bounds代码实战及其在Spark中的应用源码解析
查看>>
react的style里面不支持important的解决办法
查看>>
JS基本问题
查看>>
我的第一篇博客
查看>>
php版本之殇
查看>>