<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)

    隨筆分類

    隨筆檔案

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 亚洲国产成人精品无码区在线秒播 | 亚洲国产精品午夜电影| 久久久久亚洲?V成人无码| 日韩中文字幕精品免费一区| 在线观看人成视频免费无遮挡 | 在线播放高清国语自产拍免费 | 亚洲精品视频免费观看| 在线播放高清国语自产拍免费 | 亚洲码和欧洲码一码二码三码| 亚洲视频中文字幕| 亚洲精品无码永久中文字幕| 少妇亚洲免费精品| 国产美女无遮挡免费视频| 免费精品国产自产拍在| 222www免费视频| 久久ww精品w免费人成| 日本高清免费观看| 国产一区二区免费| 精品国产呦系列在线观看免费 | 在线观看亚洲免费视频| 成年性午夜免费视频网站不卡| 亚欧在线精品免费观看一区| 中文字幕日本人妻久久久免费| 国产精品玖玖美女张开腿让男人桶爽免费看 | 亚洲视频一区二区在线观看| 亚洲今日精彩视频| 亚洲日本va午夜中文字幕一区| 亚洲女初尝黑人巨高清| 亚洲伊人成无码综合网| 亚洲中文字幕视频国产| 久久精品国产精品亚洲人人| 国产亚洲午夜高清国产拍精品| 亚洲综合区小说区激情区| 亚洲精品A在线观看| 亚洲人成无码久久电影网站| 亚洲日韩中文字幕日韩在线| 国产亚洲精品自在线观看| 久久久久国产亚洲AV麻豆| 亚洲AV无码一区二区三区系列| 亚洲福利视频一区| 亚洲精品在线播放|