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


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 相关文章推荐
js中日期的加减法
May 06 Javascript
详解JavaScript中的every()方法
Jun 08 Javascript
在AngularJS中使用AJAX的方法
Jun 17 Javascript
JavaScript判断按钮被点击的方法
Dec 13 Javascript
全面解析Bootstrap中Carousel轮播的使用方法
Jun 13 Javascript
jQuery ajaxSubmit 实现ajax提交表单局部刷新
Jul 04 Javascript
JS 实现Base64编码与解码实例详解
Nov 07 Javascript
node实现的爬虫功能示例
May 04 Javascript
Node.js实现一个HTTP服务器的方法示例
May 13 Javascript
原生js无缝轮播插件使用详解
Mar 09 Javascript
react实现复选框全选和反选组件效果
Aug 25 Javascript
ajax jquery实现页面某一个div的刷新效果
Mar 04 jQuery
不用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中在数据库中保存Checkbox数据(2)
2006/10/09 PHP
php上传中文文件名乱码问题处理方案
2015/02/03 PHP
PHP将二维数组某一个字段相同的数组合并起来的方法
2016/02/26 PHP
ThinkPHP框架实现导出excel数据的方法示例【基于PHPExcel】
2018/05/12 PHP
关于Anemometer图形化显示MySQL慢日志的工具搭建及使用的详细介绍
2020/07/13 PHP
slice函数的用法 之不错的应用
2006/12/29 Javascript
asp(javascript)全角半角转换代码 dbc2sbc
2009/08/06 Javascript
Javascript中的异步编程规范Promises/A详细介绍
2014/06/06 Javascript
js淡入淡出的图片轮播效果代码分享
2015/08/24 Javascript
jQuery的文档处理程序详解
2016/05/10 Javascript
jQuery 3 中的新增功能汇总介绍
2016/06/12 Javascript
AngularJS中实现动画效果的方法
2016/07/28 Javascript
javascript中Number的方法小结
2016/11/21 Javascript
Angular使用 ng-img-max 调整浏览器中的图片的示例代码
2017/08/17 Javascript
微信小程序实现的日期午别医生排班表功能示例
2019/01/09 Javascript
node.js开发辅助工具nodemon安装与配置详解
2020/02/06 Javascript
Vue 修改网站图标的方法
2020/12/31 Vue.js
python实现绘制树枝简单示例
2014/07/24 Python
Python实现对百度云的文件上传(实例讲解)
2017/10/21 Python
Python之多线程爬虫抓取网页图片的示例代码
2018/01/10 Python
Python Tkinter实现简易计算器功能
2018/01/30 Python
解决Python 中英文混输格式对齐的问题
2018/07/16 Python
使用Django连接Mysql数据库步骤
2019/01/15 Python
Spring http服务远程调用实现过程解析
2020/06/11 Python
处理textarea中的换行和空格
2019/12/12 HTML / CSS
奥地利度假券的专家:we-are.travel
2019/04/10 全球购物
管理科学大学生求职信
2013/11/13 职场文书
安全事故检讨书
2014/01/18 职场文书
优秀教师的感人事迹
2014/02/04 职场文书
乡镇2014法制宣传日活动总结
2014/11/01 职场文书
2014年驾驶员工作总结
2014/11/18 职场文书
三方合作意向书范本
2015/05/09 职场文书
中学总务处工作总结
2015/08/12 职场文书
2016年大学生暑期社会实践方案
2015/11/26 职场文书
2016年社区国庆节活动总结
2016/04/01 职场文书
MySQL 重命名表的操作方法及注意事项
2021/05/21 MySQL