写了个检查页面数据是否修改来弹出提示的东东

本来可能可以在submit上直接加点东西的,但因为用了jquery.validate,不能在form.sumbit上挂事件了.

而且似乎这个东西也不一定有多少价值, 只是项目需要用到.

不帖代码了, 核心检测是否表单修改的代码是网上copy的:

 

Utils.isFormChanged = function(formId)
{
    
if (Utils.FormChanged)
        
return true;

    
var formObj = document.getElementById(formId);
        
    
var inputObjs=formObj.getElementsByTagName("INPUT");    //For   Input   Obj  
    for(var i=0;i<inputObjs.length;i++)  
    {            
        
if((inputObjs[i].type.toUpperCase()=="TEXT" || inputObjs[i].type.toUpperCase()=="FILE")
 
&& inputObjs[i].defaultValue!=inputObjs[i].value)  
            {
return true;}
        
else if((inputObjs[i].type.toUpperCase()=="RADIO" || inputObjs[i].type.toUpperCase()=="CHECKBOX"
 
&& inputObjs[i].defaultChecked!=inputObjs[i].checked)
            {
return true;}
    }  

    
var selectObjs = formObj.getElementsByTagName("SELECT");//For   Select   Obj  
    for(var i=0; i<selectObjs.length; i++)
    {  
        
for(var j=1; j<selectObjs[i].length; j++)
        {  
            
if (selectObjs[i].options[j].defaultSelected != selectObjs[i].options[j].selected)  
                {
return true;} 
        }  
    }

    
var textareaObjs=formObj.getElementsByTagName("TEXTAREA");  //For   Textarea   Obj  
    for(var i=0; i<textareaObjs.length; i++)  
    {
        
if(textareaObjs[i].defaultValue!=textareaObjs[i].value)
           {
return true;}
    }
    
return   false;  
}

 

//要小心地处理窗口关闭的事件, 另外form提交之前也会触发这个事件, 要用全局变量管住一下.

Utils.initCloseCheck 
= function(formId, msg)
{
    Utils.closeMessage 
= msg;
    Utils.FormId 
= formId;
    
    window.onbeforeunload 
= function(){
        
if (!Utils.ForceClose && Utils.isFormChanged(Utils.FormId))
        {
            
return Utils.closeMessage;
        }
    }
}

posted @ 2008-12-26 17:31  果果’er  阅读(297)  评论(0编辑  收藏  举报