<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 囝濼 閱讀(1829) 評論(0)  編輯  收藏 所屬分類: javascript


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


    網站導航:
     
    主站蜘蛛池模板: 好爽…又高潮了免费毛片| 亚洲精品岛国片在线观看| 久久久久亚洲AV无码去区首| 亚洲美女在线国产| 69精品免费视频| 黄网站色视频免费看无下截| 久久精品国产亚洲AV香蕉| 免费人成网站在线高清| 91人人区免费区人人| 特级毛片免费观看视频| 亚洲欧洲精品一区二区三区| 亚洲国产婷婷香蕉久久久久久| 在线免费观看国产| 免费一级毛片在线播放视频免费观看永久 | 黄色片在线免费观看 | 国产在线观看片a免费观看| 无码的免费不卡毛片视频 | WWW免费视频在线观看播放| 亚洲天堂2016| 久久亚洲精品成人| 免费人成激情视频| 成人免费a级毛片| 91在线手机精品免费观看| 亚洲免费视频一区二区三区| 亚洲精品无码你懂的| 亚洲精品第五页中文字幕| 亚洲午夜久久久影院| 国产成人免费福利网站| 美女裸身网站免费看免费网站| 三年片免费观看大全国语| 猫咪免费观看人成网站在线| 色老板亚洲视频免在线观| 亚洲视频在线一区| 亚洲精品无码永久中文字幕| 又黄又爽的视频免费看| 日韩高清在线免费观看| 野花高清在线观看免费3中文 | 人人狠狠综合久久亚洲88| 亚洲AV无码成H人在线观看| 免费爱爱的视频太爽了| 一二三四视频在线观看中文版免费|