zoukankan      html  css  js  c++  java
  • 写了个检查页面数据是否修改来弹出提示的东东

    本来可能可以在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;
            }
        }
    }

  • 相关阅读:
    utf-8编码汉字转换成对于的16进制 10进制对于的值
    CentOS 6和CentOS 7命令区别
    dedecms二次开发帮助文档地址
    DEDE整站动态化或整站静态化设置方法
    dede数据库表结构和dedecms数据库字段说明
    c++如何编写线程安全的DLL
    Socket中常见的几个转换函数(htonl,htons,ntohl,ntohs,inet_addr,inet_ntoa)
    Winsock 示例
    命名管道的使用方式:消息模式/字节模式
    命名管道-简单的例子
  • 原文地址:https://www.cnblogs.com/nonlyli/p/1363228.html
Copyright © 2011-2022 走看看