<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    lycong

    Fix 問題: 進入編輯頁面,當點擊其他地方時,判斷頁面是否修改過,并提示相關信息。

            問題如下:例如要修改某個人的信息時,進入編輯頁面,當點擊其他地方時,判斷信息是否已被修改過,并提示相關信息。
            本例中以個人通訊錄信息為背景, 解決方法如下:
    1.首先要有個 Object保存 一開始時從服務器得到的初始數據:
     
     var cachedFormContent = {};

          
    function fCacheForm() {   //首先cache個人通訊錄的信息
              cachedFormContent.FN = fGetOri("FN");
              cachedFormContent.email 
    = fGetOri("EMAIL;PREF");
              cachedFormContent.groups 
    = fGetOriGrps();
              cachedFormContent.BDAY 
    = fGetOriBDAY();
              cachedFormContent.CELL 
    = fGetOri("TEL;CELL;VOICE");
              cachedFormContent.ICQ 
    = fGetOri("ICQ");
              cachedFormContent.URL 
    = fGetOri("URL");
              cachedFormContent.ADR_HOME 
    = fGetOri("ADR;HOME");
              cachedFormContent.PC_HOME 
    = fGetOri("PC;HOME");
              cachedFormContent.TEL_HOME 
    = fGetOri("TEL;HOME;VOICE");
              cachedFormContent.ORGNAME 
    = fGetOri("ORGNAME");
              cachedFormContent.ADR_WORK 
    = fGetOri("ADR;WORK");
              cachedFormContent.PC_WORK 
    = fGetOri("PC;WORK");
              cachedFormContent.TEL_WORK 
    = fGetOri("TEL;WORK;VOICE");
              cachedFormContent.FAX 
    = fGetOri("TEL;WORK;FAX");

          }
    2. 利用 JSON標簽從服務器端得到個人通訊錄的信息,并轉化為js能識別的內容,并寫一個函數用來獲得原來的字段所對應的值
    var original = <wm:JSON value="${original_user}" />;    //得到初始的個人通訊錄資料

          
    function fGetOri(name) {  //name:為字段名, 返回:通訊錄個人屬性
              var empty = "";
              
    if (original[name] == null{
                  
    return empty;
              }

              
    return original[name];
          }


          
    function fGetOriGrps() {    //從服務器得到的初始分組
              var pabGrps = [];
              pabGrps 
    =<wm:JSON value="${original_user['groups']}" />;
              
    return pabGrps;
          }
    3.寫函數判斷 離開前查看內容是否修改過, 從cacheFormContent 和當前內容對比, 同時要有函數獲取當前屬性的value值
          function fCheckBeforeLeaving() {  //離開前查看是否修改過
              var result = true;
              
    if (fHaveBeenModified()) {
                  
    return false;
              }

              
    return result;
          }


          
    function fHaveBeenModified() {    //cache 和當前不同 則表示修改過
              var c = cachedFormContent;
              
    return c.FN != fGetContent("p_FN"|| c.email != fGetContent("p_EMAIL;PREF"|| compareGrps(c, fGetGrps())
                      
    || c.BDAY != fGetContent("p_BDAY")
                      
    || c.CELL != fGetContent("p_TEL;CELL;VOICE"|| c.ICQ != fGetContent("p_ICQ"|| c.URL != fGetContent("p_URL")
                      
    || c.ADR_HOME != fGetContent("p_ADR;HOME"|| c.PC_HOME != fGetContent("p_PC;HOME"|| c.TEL_HOME != fGetContent("p_TEL;HOME;VOICE")
                      
    || c.ORGNAME != fGetContent("p_ORGNAME"|| c.ADR_WORK != fGetContent("p_ADR;WORK"|| c.PC_WORK != fGetContent("p_PC;WORK")
                      
    || c.TEL_WORK != fGetContent("p_TEL;WORK;VOICE"|| c.FAX != fGetContent("p_TEL;WORK;FAX");
          }


          
    function fGetGrps() {         //獲得所屬聯系組
              var grps = document.getElementsByName("p_groups");
              
    var checked_grps = [];
              
    for (var i = 0; i < grps.length; i++{
                  
    var grp = grps[i];
                  
    if (grp.checked) {
                      checked_grps[checked_grps.length] 
    = grp.value;
                  }

              }


              
    return checked_grps;
          }


          
    function compareGrps(c, grp) {
              
    var groups = c.groups;
              
    if (groups.length != grp.length) {
                  
    return true;
              }

              
    for (var i = 0; i < groups.length; i++{
                  
    if (groups[i] != grp[i]) {
                      
    return true;
                  }


              }

              
    return false;
          }


          
    function fGetContent(item0) {
              
    var content = document.getElementsByName(item0);
              
    var val = content[0].value;
              
    return val;
          }
    4.利用javascript 的 setTimeout()函數 來 每隔一段時間就更新一次cacheFormContent的值(其實在這里每次獲取的值都是相同,只是用作開始時就獲取cacheFormContent),最后用window.onbeforeunload進行加載,注意不要用onload (2者之間的差別請差相關資料)

          setTimeout(fCacheForm, 
    50);


          window.onbeforeunload 
    = function() {
              
    var msg = gLang.pab.msg;
              
    var pabForm = $("pabEdit");
              
    if (check && !fCheckBeforeLeaving()) {   //檢查是否已修改過,并提示要保存
                  return msg["pab_save_before_cancel"];
                  pabForm.submit();
              }

          }

    posted on 2008-06-16 21:50 cong 閱讀(619) 評論(0)  編輯  收藏 所屬分類: JavaScript

    My Links

    Blog Stats

    常用鏈接

    留言簿(1)

    隨筆分類

    隨筆檔案

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 亚洲av永久无码嘿嘿嘿| 33333在线亚洲| 国产免费久久精品丫丫| 国产一区二区三区在线免费观看 | 亚洲不卡中文字幕| 最近中文字幕高清免费中文字幕mv | 一区二区三区免费看| 亚洲精品麻豆av| 久久免费香蕉视频| 久久青草亚洲AV无码麻豆| 久久久久成人片免费观看蜜芽| 亚洲综合一区二区国产精品| 96免费精品视频在线观看| 亚洲白色白色永久观看| 久九九精品免费视频| 亚洲欧美自偷自拍另类视| 男人的天堂亚洲一区二区三区 | 无码AV片在线观看免费| 亚洲小视频在线观看| 91黑丝国产线观看免费| 久久水蜜桃亚洲AV无码精品 | 亚洲精品无码久久千人斩| 黄网站免费在线观看| 亚洲精品国产福利片| 国内一级一级毛片a免费| 免费人成视频在线观看免费| 亚洲精品乱码久久久久久久久久久久 | 麻豆安全免费网址入口| 亚洲欧洲日产国码无码网站| 无码人妻一区二区三区免费n鬼沢| 亚洲av成人综合网| 亚洲 自拍 另类小说综合图区| 一个人免费视频在线观看www| 亚洲色成人网一二三区| 精品免费国产一区二区三区| 男女拍拍拍免费视频网站| 亚洲视频在线一区二区三区| 免费看小12萝裸体视频国产| 无码日韩精品一区二区免费暖暖| 亚洲精品无码久久久久牙蜜区| 亚洲乱亚洲乱妇无码麻豆|