验证用户是否修改过页面的数据的实现方法


Posted in Javascript onSeptember 26, 2008

起因:

在实现程序的修改模块时,要在页面端检查用户是否修改过数据,以便提醒用户及时保存修改后的数据。

实现要求:

判断用户是否修改了输入的内容,要能判断input中的checkbox,text,radio等,不知道会多少个input,也不知道input的ID和name,要在客户端判断是否修改,不能产生提交。还要同时满足IE和firefox两种环境。也要支持master和content页的使用。

解决方案;

处理思路:在页面加载时记录所有的input的值或状态,如果要求在用户进行修改操作时立即调整控件状态,则在数据区div上的onclick和onkeypress事件里调用检查数据是否改变的函数,并设置相应控件的状态(用ha_setch())。如果是在提交或用户手动控制检查过程时,则在相应的操作事件中调用检查数据是否改变(例在button的onclick()中使用ha_checkin()控制提交)。

以下是实现代码
var ha_last=new Array;//定义一个全局的空对象,存放所有的初始值。
function ha_get()//读取初始值
{ var ha_input = document.getElementsByTagName("input");
for (var i=0;i<ha_input.length;i++)
{
if (ha_input[i].type=="password"){ ha_last.push(ha_input[i].value);}//根本页面需要设置type的值和对象属性
if (ha_input[i].type=="radio") {ha_last.push(ha_input[i].checked);}//要保证检查的范围是否准确
}
}
window.onload=ha_get;//绑定读取初始值的函数
function ha_checkin()//检查新的输入值和初始值是否相等。返回判断结果。true为没有发生修改,false为有修改。
{ var ha_now=new Array;
var ha_input = document.getElementsByTagName("input");
for (var i=0;i<ha_input.length;i++)
{
if (ha_input[i].type=="password"){ ha_now.push(ha_input[i].value);}//根本页面需要设置type的值和对象属性。
if (ha_input[i].type=="radio") {ha_now.push(ha_input[i].checked);}//也要保证和ha_get()中检查的标签相一致
}
if (ha_now.toString()==ha_last.toString())//没修改
{return true;}
else//有修改
{return false;}
}
function ha_setch(){//设置相应的控件状态
if (ha_checkin())//没有变化

 //改变控件的显示和功能状态
else//有变化

 //改变控件的显示和功能状态
}

注:以上解决方案只在IE6和firefox3.0。2中测试并通过。没有在其它的浏览器中测试。

Javascript 相关文章推荐
JavaScript Base64编码和解码,实现URL参数传递。
Sep 18 Javascript
JavaScript类型转换方法及需要注意的问题小结(挺全面)
Nov 11 Javascript
zShowBox 图片放大展示jquery版 兼容性
Sep 24 Javascript
jquery解决图片路径不存在执行替换路径
Feb 06 Javascript
JS this作用域以及GET传输值过长的问题解决方法
Aug 06 Javascript
JavaScript获得当前网页来源页面(即上一页)的方法
Apr 03 Javascript
js实现密码强度检测【附示例】
Mar 30 Javascript
jQuery树形插件jquery.simpleTree.js用法分析
Sep 05 Javascript
laydate日历控件使用方法详解
Nov 20 Javascript
vue+webpack中配置ESLint
Nov 07 Javascript
layui 中select下拉change事件失效的解决方法
Sep 20 Javascript
js+h5 canvas实现图片验证码
Oct 11 Javascript
不用AJAX和IFRAME,说说真正意义上的ASP+JS无刷新技术
Sep 25 #Javascript
js每次Title显示不同的名言
Sep 25 #Javascript
Js动态创建div
Sep 25 #Javascript
自己开发Dojo的建议框架
Sep 24 #Javascript
Discuz! 6.1_jQuery兼容问题
Sep 23 #Javascript
javascript的trim,ltrim,rtrim自定义函数
Sep 21 #Javascript
javascript各种复制代码收集
Sep 20 #Javascript
You might like
php按百分比生成缩略图的代码分享
2014/05/10 PHP
PHP中子类重载父类的方法【parent::方法名】
2016/05/06 PHP
浅谈mysql_query()函数的返回值问题
2016/09/05 PHP
浅谈php中fopen不能创建中文文件名文件的问题
2017/02/06 PHP
PHP观察者模式示例【Laravel框架中有用到】
2018/06/15 PHP
Javascript Function对象扩展之延时执行函数
2010/07/06 Javascript
DWR实现模拟Google搜索效果实现原理及代码
2013/01/30 Javascript
JS产生随机数的用法小结
2016/12/10 Javascript
Node.js用readline模块实现输入输出
2016/12/16 Javascript
Vue.js实现模拟微信朋友圈开发demo
2017/04/20 Javascript
jQuery判断网页是否已经滚动到浏览器底部的实现方法
2017/10/27 jQuery
vue实现点击当前标签高亮效果【推荐】
2018/06/22 Javascript
基于Vue实现微信小程序的图文编辑器
2018/07/25 Javascript
Vue中的v-for指令不起效果的解决方法
2018/09/27 Javascript
angular中子控制器向父控制器传值的实例
2018/10/08 Javascript
怎么使用javascript深度拷贝一个数组
2019/06/06 Javascript
layui table数据修改的回显方法
2019/09/04 Javascript
如何实现js拖拽效果及原理解析
2020/05/08 Javascript
javascript读取本地文件和目录方法详解
2020/08/06 Javascript
vue实现简单计算商品价格
2020/09/14 Javascript
[01:28]一分钟告诉你DOTA2 TI9不朽宝藏Ⅱ中有什么!
2019/07/09 DOTA
python启动办公软件进程(word、excel、ppt、以及wps的et、wps、wpp)
2009/04/09 Python
基于wxpython开发的简单gui计算器实例
2015/05/30 Python
python绘制铅球的运行轨迹代码分享
2017/11/14 Python
python处理“
2019/06/10 Python
Django 过滤器汇总及自定义过滤器使用详解
2019/07/19 Python
如何在Django项目中引入静态文件
2019/07/26 Python
通过python扫描二维码/条形码并打印数据
2019/11/14 Python
美国珠宝精品店:Opulent Jewelers
2019/08/20 全球购物
《月光启蒙》教学反思
2014/03/01 职场文书
入党积极分子学习两会心得体会范文
2014/03/17 职场文书
大学新闻系自荐书
2014/05/31 职场文书
工商管理专业自荐信
2014/06/03 职场文书
房地产销售经理岗位职责
2015/02/02 职场文书
机械原理课程设计心得体会
2016/01/15 职场文书
mysql自增长id用完了该怎么办
2022/02/12 MySQL