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

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

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

    囝濼的博客[www.bluenuo.cn]

    網盤[disk.bluenuo.cn]
    隨筆 - 6, 文章 - 1, 評論 - 11, 引用 - 0
    數據加載中……

    通用離開頁面前檢查form內容是否發生改變

    文/囝濼 www.bluenuo.cn

    使用方法:
    1.在需要的頁面引入javascript核心代碼(下面有,復制粘貼即可)
    2.在body的onload事件中加入saveElementsOnLoad(myform);方法,其中myform是所驗證的form對象
    3.在body的onbeforeunload事件中加入return checkFormOnUnload(myform);其中myform是所驗證的form對象
    4.ignoreFormCheck()和forceFormCheck()函數為一對姐妹函數,供用戶在自己的jsp頁面中調用,以處理特殊情況,如按保存按鈕不檢查form是否改變、導入上次保存結果,沒保存離開頁面需要強制提示等情況。這兩個函數如果多次調用,以程序流程中最后調用的那個函數為準,其他調用將不產生影響
    ignoreFormCheck()為忽略離開頁面驗證,用戶在自己的javascript函數中調用該方法后即使form發生改變離開頁面時也不做任何判斷即可離開
    forceFormCheck()為強制離開頁面驗證,用戶在自己的javascript函數中調用該方法后即使form沒有發生改變,離開頁面也會提示form已經改變
    5.getFormStatus(myform)方法可隨時檢查form是否已經改變,改變返回ture,否則返回false,其中myform是所檢查的form對象
    使用示例
    示例代碼下載
    javascript核心代碼
    使用時復制到<script>標簽體中即可

            //保存form里的所有原始屬性
            var alSavedElements = new Array();
            
    //是否判斷form的屬性改變,true判斷,false不判斷
            var bCheckForm = true;
            
            
    /**
             * 頁面加載時候的操作,所有頁面加載時的操作可以在這里進行擴展
             * @param form 所要保存屬性的form
             
    */

            
    function saveElementsOnLoad(form) {
                saveFormElements(form);
            }

            
            
    /**
             * 離開頁面時的操作,所有離開頁面前的操作可在這里進行擴展
             * @param form 所要保存屬性的form
             * @param elements 所保存的屬性的數組
             * @return 離開頁面的提示信息
             
    */

            
    function checkFormOnUnload(form) {
                
    var bFormStatus = isFormChanged(form);
                
    if(bCheckForm && bFormStatus) {
                    
    return "該頁面已經被修改,離開后所有修改全部丟失!"
                }

                
    return;
            }

            
            
    /**
             * 保存form的所有屬性
             * @param form 所要保存的屬性的form
             
    */

            
    function saveFormElements(form) {
                
    for(var i = 0 ; i < form.elements.length ; i++ ) {
                    
    if("select-one" == form.elements[i].type) {
                        alSavedElements.push(form.elements[i].selectedIndex);
                        
    continue;
                    }

                    
    if("radio" == form.elements[i].type || "checkbox" == form.elements[i].type) {
                        alSavedElements.push(form.elements[i].checked);
                        
    continue;
                    }

                    alSavedElements.push(form.elements[i].value);
                }

            }

            
            
    /**
             * 檢查form的屬性是否改變
             * @param form 所比較的form
             * @param alSavedElements 所比較的原始屬性數組
             * @return true form已變化 false form沒變化
             
    */

            
    function isFormChanged(form) {
                
    var bChanged = false;
                
    if(form.elements.length!=alSavedElements.length) {
                    bChanged 
    = true;
                    
    return bChanged;
                }

                
    for(var i = 0 ; i < form.elements.length ; i++ ) {
                    
    if("submit" != form.elements[i].type && "button" != form.elements[i].type && "reset" != form.elements[i].type && "hidden" != form.elements[i].type && "radio" != form.elements[i].type && "checkbox" != form.elements[i].type && "select-one" != form.elements[i].type && form.elements[i].value!=alSavedElements[i]) {
                        bChanged 
    = true;
                        
    break;
                    }

                    
    if("select-one" == form.elements[i].type && form.elements[i].selectedIndex!=alSavedElements[i]) {
                        bChanged 
    = true;
                        
    break;
                    }

                    
    if(("radio" == form.elements[i].type || "checkbox" == form.elements[i].type ) && form.elements[i].checked != alSavedElements[i]) {
                        bChanged 
    = true;
                        
    break;
                    }

                }

                
    return bChanged;
            }

            
            
    /**
             * 忽略form改變檢查
             * 說明:該函數調用后即使form改變也不做離開頁面的提示
             
    */

            
    function ignoreFormCheck() {
                bCheckForm 
    = false;
            }

            
            
    /**
             * 強制進行form改變檢查
             * 說明:該函數調用后無論form是否改變都會提示form已改變,是否離開頁面
             
    */

            
    function forceFormCheck() {
                bCheckForm 
    = true;
            }

            
            
    /**
             * 返回form的當前狀態
             * 說明:用戶可以通過該狀態決定程序的流程走向
             * @param form 所檢查的form對象
             * @return ture form改變,true form沒改變
             
    */

            
    function getFormStatus(form) {
               
    return isFormChanged(form); 
            }





    囝濼,深圳康拓普信息技術有限公司
    您可以通過其博客了解更多信息和文章:http://www.bluenuo.cn

    posted on 2009-02-07 16:05 囝濼 閱讀(1830) 評論(0)  編輯  收藏 所屬分類: javascript


    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 亚洲AV无码男人的天堂| 久久精品免费大片国产大片| 亚洲精品无码久久久久秋霞| 全免费一级午夜毛片| 一区二区三区免费精品视频 | www视频在线观看免费| 亚洲中文字幕无码mv| 久久精品国产亚洲AV不卡| 久久亚洲精品11p| 亚洲精品成人网站在线观看| 国产VA免费精品高清在线| 亚洲国产第一页www| 女人18毛片a级毛片免费| aa在线免费观看| 亚洲а∨天堂久久精品9966| 亚洲中文字幕在线乱码| 99久久免费国产精品特黄| 国产精品免费观看视频| 亚洲一区中文字幕在线电影网| 中文字幕亚洲一区| 全免费一级午夜毛片| 一级毛片在线观看免费| 日本一区二区三区免费高清在线| 91亚洲国产成人久久精品网站| 吃奶摸下高潮60分钟免费视频| 30岁的女人韩剧免费观看| 亚洲影院天堂中文av色| 久久久久亚洲Av片无码v | 日本免费v片一二三区| 大地资源网高清在线观看免费| 亚洲色大18成人网站WWW在线播放 亚洲色大成WWW亚洲女子 | 国产精品免费一区二区三区| 亚洲精品二三区伊人久久| 亚洲国产精品无码一线岛国| 国产精品麻豆免费版| 国产成人精品免费视| 毛片免费在线观看| caoporn国产精品免费| 亚洲AV无码专区在线观看成人| 亚洲第一页中文字幕| 日韩一级免费视频|