国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

jQuery不兼容input的change事件問題解決過程

2024-05-06 16:11:27
字體:
來源:轉載
供稿:網友
本文記錄了在項目中發現在IE9中不會立即觸發change事件,存在兼容問題的解決過程,非常的詳盡,解決過程中也有新問題出現,最終都解決完畢,完美實現了兼容各大主流瀏覽器
 
 

最近開發一個項目,需要實現用戶在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(); //不相同則計算
                }
            });

 

經反復驗證,在所有的瀏覽器下均顯示正常,解決了兼容的問題!


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 盐边县| 鄂尔多斯市| 丰原市| 邵武市| 陆川县| 平塘县| 新化县| 谷城县| 吉安县| 类乌齐县| 绵阳市| 九龙城区| 彰武县| 行唐县| 祥云县| 西林县| 临安市| 丁青县| 财经| 无棣县| 威海市| 柯坪县| 通河县| 台北市| 新疆| 绥化市| 成都市| 昂仁县| 霍林郭勒市| 青浦区| 如东县| 全州县| 什邡市| 临朐县| 通河县| 衡南县| 民乐县| 克什克腾旗| 郧西县| 蕲春县| 金华市|