自动识别页面上的所有控件是否被改变过

在页面开发的新增或者修改的时候,有时候给页面上的所有控件赋值完之后,点击保存,此页面不关闭,那么问题来了,如果页面上所有的值都不改变,这时候如果继续进行保存操作,着实有些不妥,那么就需要判断页面上的所有控件是否被改变过,接下来方法如下:

1、js如下:

var inputsData;

var textareasData;

var selectsData;

$(function () {

inputLoad();

});

function inputLoad() {

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;

}

}

//验证页面是否通过,返回 true = 通过,false = 不通过

//IsAlert = (0 = 不提示,1 = alert提示,2 = confirm提示)

//errorMessage = (‘0‘ = 不提示 ,其他为验证不通过时提示文字)

//SumbitID =(‘0‘ = 提示完成后不做提交操作,非空则为页面某按钮ID,做click操作)

//isCheckButton = (是否对比button按钮, true = 对比, false = 不对比)

function checkPage(isAlert, errorMessage, SumbitID, isCheckButton) {

// alert("我是子页面");

var ReturnBool = false;

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++) {

var istrue = true;

if (!isCheckButton && inputs[i].type == "submit") {

istrue = false;

}

if (istrue) {

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) {

var rbool = false;

if (isAlert == 0) {

rbool = true;

} else if (isAlert == 1) {

alert(errorMessage)

}

if (isAlert == 2) {

if (confirm(errorMessage)) {

rbool = true;

}

}

if (rbool == true) {

if (SumbitID != 0) {

$("#" + SumbitID).click();

}

}

ReturnBool = true;

}

return ReturnBool;

}

2、页面上引用该JS

<asp:Button class="res" ID="btnSave" runat="server" Text="保存" OnClientClick="return checkPage(0,‘‘,0,true);" onclick="btnSave_Click"  />

该js中引用的参数视情况而定,其作用在js中有所详述。

3、保存完之后,引用js中的inputLoad()方法

Page.ClientScript.RegisterStartupScript(this.GetType(), "", "<script>alert(‘数据添加成功‘);inputLoad();</script>");

ok了,就是该js总没有判断<input type=‘file‘>的内容,所以,该方法还有待改进。

时间: 2024-11-08 20:26:53

自动识别页面上的所有控件是否被改变过的相关文章

ASP.NET页面生命周期与控件生命周期

ASP.NET页面生命周期 (1)PreInit 预初始化(2)Init 初始化(3)InitComplete 初始化完成(4)PreLoad 预加载(5)Load 加载(6)LoadComplete 加载完成(7)PreRender 预输出(8)PreRenderComplete 预输出完成(9)Unload 卸载 ASP.NET控件生命周期 -- 实例化(Instantiate) 控件被页面或另一个控件通过调用它的构造器所实例化.这个步骤之后所列出的阶段,仅当控件加入控件树中才会发生. --

在Web上调用Ocx控件

原文:http://blog.csdn.net/goodadult2012/article/details/6343369 在HTML页面中使用ActiveX控件包含三个基本操作:将控件放入HTML中:将该控件下载给用户:在用户机器上安装该控件.如果只是针对IE用户,在HTML中插入ActiveX控件就比较简单:如果同时兼顾IE和Netscape用户,则要做更多工作.大家知道,HTML文件由文本和各种标志 (tags)组成,ActiveX 控件对于IE在HTML中的标志是<OBJECT>,该标

【干货】再上数据分页控件 ━ 更加灵活,更加实用-提供源码

再上数据分页控件-更加灵活,更加实用 关于数据分页的文章太多了,各有各的一套方案,但大多都很类似,要么使用存储过程,要么直接使用代码进行分页.各种方案分页的效率也不尽相同,我们不一定要找一个最高效的(根据实际的项目情况),找一个最合适的就OK了.下面我要谈的分页控件非常灵活,可以支持任意类型的数据库,同时可以支持存储过程或代码分页(会自动判断),也支持多表的分页,非常的方便.对于数据分页的相关文章,在我的博客中可以找到很多,下面我做一个简单的汇总,方便大家查阅. 1. 原创企业级控件库之大数据量

上传文件控件

我们在编写页面的时候会遇到这样的情况,需要上传文件.我们一般会使用<input type="file" />来处理. 但是他会有一个小问题.下面我们一起来看一看. 不同浏览器下式样差别较大. IE8:在按钮前面有一个文本框用来显示文件路径. chrome:在按钮后面显示文件上传状态.默认文言略有不同. Firefox:与chrome相似. 不同浏览器下的式样不同,导致我们不能基于一个稳定的式样做设置,当我们设置width和height也会遮盖不同的部分. 解决方案1:将&l

c# winform 循环遍历界面上的所有控件,foreach,Controls,AllowDrop

foreach (System.Windows.Forms.Control control in this.groupBox2.Controls)//遍历groupBox2上的所有控件 { if (control is System.Windows.Forms.PictureBox) { System.Windows.Forms.PictureBox pb = (System.Windows.Forms.PictureBox)control; pb.AllowDrop = true; } if

C#在某个线程上创建的控件不能成为在另一个线程上创建的控件的父级

首先在form1的窗体载入中新建了一个Class1对象并将本身的引用传递进入其构造函数,然后在Class1的构造函数中创建一个线程.该线程所代理的方法事件是本类中的一个add方法.而add方法的内容则是在form1上放一个textbox.然而这个流程你需要注意的有几个问题:1.哪个是主线程?所谓主线程是第一个启动的线程,是从main开始的.form1的这个窗体是由主线程创建的.2.Thread t的线程是什么?t是由主线程创建的,t的操作内容是在由主线程创建的窗体上放一个textbox.也就是说

可能用得上的UI控件

为了便于开发者打造各式各样的优秀App,UIKit框架提供了非常多功能强大又易用的UI控件以下列举一些在开发中可能用得上的UI控件:   红色表明最常用,蓝色代表一般,黑色代表几乎不用(这不是绝对的,仅供参考)

如何在UIScrollView的xib上添加子控件并添加AutoLayout约束

引言 自从苹果推出了autoLayout之后,作为开发者,深深的体验到了他的便捷之处,再也不用为适配不同屏幕布局UI而烦恼,我们仅仅需要和类关联一个xib文件,想上面放置我们需要的控件xib,并打好其相对于父视图以及同级视图的约束关系,这样我们就做好了不同屏幕的适配.但是奇怪的是UIScrollView上添加子控件,和之前的一样的操作,报的错却很吓人,那是为什么呢? 原因分析 因为UIScrollView想要能滑动的前提是要知道他的ContentSize的大小,我们直接向上面添加约束,他不知道自

兼容IE浏览器样式的html上传文件控件

最近在公司做项目时需要用到html的上传文件控件,但发现原生的上传文件控件<input type="file" />在IE.Chrome浏览器的显示效果相差很大,为了统一样式,我参考了网上的许多方法,下面给出我自己的代码实现(实际上就是在原生的input file上面加个外壳,再添加一些样式,让它看上去不像原生的这么丑) html部分 <div class="upload-box"> <div class="input&quo