您的位置:首页 > Web前端 > JavaScript

[转]javascript 判断某页面上的表单数据是否改变过

2008-12-31 11:50 337 查看
本文转自:http://info.codepub.com/2008/09/info-22582.html

原文如下:

使用场合:当某个页面数据修改时,需要执行某些操作时   

在页面的body加载事件(onload)中加上initFileds()就可以记录页面的初始数据

在需要判断页面数据是否改变时调用checkModification()方法就可判断数据是否改变

返回值为true就是已经改变

返回值为false就是没有改变

   

    // 页面编辑数据

    var inputsData;

    var textareasData;

    var selectsData;

    // 记录下表单中的原始值

    function initFileds() {

        var inputs = document.getElementsByTagName("input");

        var textareas = document.getElementsByTagName("textarea");

        var selects = document.getElementsByTagName("select");

        inputsData = new Array(inputs.length);

        for (var i=0;i<inputs.length;i++) {

            inputsData[i] = inputs[i].value;

            if (inputs[i].type=="radio") {

                inputsData[i]=inputs[i].checked;

            }

        }

        textareasData = new Array(textareas.length);

        for (var i=0;i<textareas.length;i++) {

            textareasData[i] = textareas[i].value;

        }

        selectsData = new Array(selects.length);

        for (var i=0;i<selects.length;i++) {

            selectsData[i] = selects[i].value;

        }

    }

    /*

     * 判断表单中值是否被修改了

     * submitCommand 表单有改动时,执行的javascript代码

     */

    function checkModification(submitCommand) {

        var inputs = document.getElementsByTagName("input");

        var textareas = document.getElementsByTagName("textarea");

        var selects = document.getElementsByTagName("select");

        var hasBeenChanged = false;

        for (var i=0;i<inputs.length;i++) {

            if (inputs[i].type=="radio"&&(inputs[i].checked!=inputsData[i])) {

                hasBeenChanged = true;

                inputsData[i]=inputs[i].checked;

            }

            if (inputs[i].type!="radio"&&inputsData[i]!=inputs[i].value) {

             if(inputs[i].name!="actionType"){

                 hasBeenChanged = true;

                }

                inputsData[i]=inputs[i].value;

            }

        }

        for (var i=0;i<textareas.length;i++) {

            if (textareasData[i]!=textareas[i].value) {

                hasBeenChanged = true;

                textareasData[i]=textareas[i].value;

            }

        }

        for (var i=0;i<selects.length;i++) {

            if (selectsData[i]!=selects[i].value) {

                hasBeenChanged = true;

                selectsData[i]=selects[i].value;

            }

        }

         if (hasBeenChanged&&confirm("数据已经改变,是否保存?")) {

             eval(submitCommand);

         }

    }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  javascript function input