大表格,多Form元素的提交 判断表单数据是否有被修改过
2009-06-25 10:48
996 查看
/*
FileName:Client.js
version:0.3
2006-02-13
*/
//页面载入后 执行下面代码 初始化变量,并记录原始通道状态
//建立公共变量
var o_d;
var xmlRes;
var list_tbody = list_table.children.item(0).children;
var list_count = list_tbody.length; //当前页通道总数
list_count--;
list_count--;
//建立数组
var inputs = new Array(list_count)
for(i=0;i<list_count;i++){
inputs[i] = getn(list_tbody.item(i+1),"input"); //每行的Form控件组
getn(list_tbody.item(i+1),"select");
}
var n = new Array(list_count);
var o = new Array(list_count);
for (i=0;i<list_count;i++){
n[i] = new Array(inputs[0].length);
o[i] = new Array(inputs[0].length);
}
var _flag = new Array(list_count);
for(i=0;i<list_count;i++){
_flag[i] = list_tbody.item(i+1).children.item(0).innerText; //记录标志
for(j=0;j<inputs[0].length;j++){
if(inputs[i][j].tagName == "INPUT"){
switch (inputs[i][j].type){
case ""||"text"||"textarea"||"password"||"radio" : o[i][j] = inputs[i][j].defaultValue;break;
case "checkbox" : o[i][j] = inputs[i][j].checked;break;
default : o[i][j] = inputs[i][j].value;break;
}
}else{ //不是input 就是select
o[i][j] = inputs[i][j].options[inputs[i][j].selectedIndex].value;
}
}
}
//IsModified 判断表单数据是否有被修改过
function IsModified(){
for(i=0;i<list_count;i++){
for(j=0;j<inputs[0].length;j++){
if(inputs[i][j].tagName == "INPUT"){
switch (inputs[i][j].type){
case ""||"text"||"textarea"||"password"||"radio" : n[i][j] = inputs[i][j].value;break;
case "checkbox" : n[i][j] = inputs[i][j].checked;break;
default : n[i][j] = inputs[i][j].value;break;
}
}else{ //不是input 就是select
n[i][j] = inputs[i][j].options[inputs[i][j].selectedIndex].value;
}
}
}
var Resault = false; //是否修改的标志,初始化为真
for(i=0;i<list_count;i++){ //开始比较
//如果该行有一个表单被修改,设置修改标志为真,并返回
for(j=0;j<inputs[0].length;j++){
if(n[i][j]!=o[i][j]){Resault=true;}
if(Resault){break;}
}
}
return Resault;
}
//getn 根据tag返回对象的子对象集合
/*
p:指定对象
s:tag
*/
function getn(p,s){return p.getElementsByTagName(s);}
//gen 根据tag生成并返回一个网页元素
/*
s:tag
*/
function gen(s){return document.createElement(s);}
function takeit(){
if (!IsModified())
{
alert("当前并未修改任何数据,不需要提交!");
}else{
CreateDIV(); //遮罩层
CreateDOM(); //组织和提交数据
}
return false;
}
function CreateDIV(){
var ClientWidth = document.body.scrollWidth;
var ClientHeight = document.body.scrollHeight;
//开始生成透明遮罩层(用于禁止页面操作)
var nDIV = gen("DIV"); //生成一个div层(用于透明效果)
nDIV.style.position="absolute"; //设置层的定位方式
nDIV.style.zIndex="1";
nDIV.style.pixelLeft="0";
nDIV.style.pixelTop="0";
nDIV.style.pixelWidth=ClientWidth;
nDIV.style.pixelHeight=ClientHeight;
nDIV.style.filter="progid:DXImageTransform.Microsoft.Alpha(opacity=80)"; //设置不透明度
var nFrame=gen("IFRAME"); //生成一个新的iFrame(用于遮盖控件)
nFrame.frameBorder="0";
nFrame.style.pixelLeft="0";
nFrame.style.pixelTo="0";
nFrame.style.pixelWidth=ClientWidth;
nFrame.style.pixelHeight=ClientHeight;
nDIV.appendChild(nFrame);
document.body.appendChild(nDIV); //实例化
//开始生成文档数据显示层
var dDIV=gen("DIV"); //生成一个div层(用于显示文档数据)
dDIV.style.position="absolute";
dDIV.style.zIndex=2;
dDIV.style.pixelWidth="420";
dDIV.style.pixelHeight="80";
dDIV.style.pixelLeft=(ClientWidth-dDIV.style.pixelWidth)/2;
dDIV.style.pixelTop=(ClientHeight-dDIV.style.pixelHeight)/2;
var dTable=gen("TABLE"); //生成一个Table(用于格式化显示文档数据)
var dTbody=gen("TBODY")
var dTr=gen("TR");
var dTd=gen("TD");
dTd.style.pixelWidth=dDIV.style.pixelWidth;
dTd.style.pixelHeight=dDIV.style.pixelHeight;
dTd.style.pixelLeft=dDIV.style.pixelLeft;
dTd.style.pixelTop=dDIV.style.pixelTop;
dTd.align="center";
dTd.vAlign="middle";
dTd.style.backgroundColor="#AAAAAA";
dTd.style.border="1px solid #000000";
dTd.style.color="#FFFFFF";
dTd.innerHTML="正在更新数据...请稍后...";
dTr.appendChild(dTd);
dTbody.appendChild(dTr);
dTable.appendChild(dTbody);
dDIV.appendChild(dTable);
document.body.appendChild(dDIV); //实例化
o_d = dTd; //将数据层对象传递到公共变量
}
function CreateDOM(){
var DOM = new ActiveXObject("MSXML2.DOMDocument");
DOM.async=false;
DOM.resolveExternals=false;
//构造XML文件头
var Node=DOM.createProcessingInstruction("xml","version='1.0'");
DOM.appendChild(Node);
Node=null;
//构造Root节点
var Root=DOM.createElement("Root");
//加入Root节点
DOM.appendChild(Root);
//循环构造List节点
for(i=0;i<list_count;i++){
var Resault = false; //该行是否有改动的标志
for(j=0;j<inputs[0].length;j++){
Resault=n[i][j]!=o[i][j]?true:false;
if(Resault){break;}
}
if(Resault){ //如果有改动
var List = DOM.createElement("List");
//加入flag属性
var _Flag = DOM.createAttribute("_Flag");
_Flag.value = _flag[i]
List.setAttributeNode(_Flag)
//循环加入每个属性
for(j=0;j<inputs[0].length;j++){
var newAttributeName = "AN" + j; //生成一个属性名
var N = DOM.createAttribute(newAttributeName);
if(typeof(n[i][j])=="boolean"){
N.value = n[i][j]?"true":"false";
}else{
N.value = n[i][j];
}
List.setAttributeNode(N);
}
Root.appendChild(List);
}
}
var xmlHTTP=new ActiveXObject("Microsoft.XMLHTTP");
xmlHTTP.open("POST","Channel_List_xml.asp",false);
xmlHTTP.send(DOM);
xmlRes=xmlHTTP.responseText;
CallBack();
}
function CallBack(){
o_d.innerHTML=xmlRes+"<P>3秒后页面将刷新...</P>";
setTimeout("window.location.href=window.location.href",3000);
}
function Delete(id){
if(!confirm("警告!/n/n即将删除一条数据!! 此操作不可恢复!!/n/n是否继续?")){return}
var nForm = gen("FORM");
nForm.method="post";
nForm.action=window.location.href;
nForm.target="_self";
//action=delete
var fAction=gen("INPUT");
fAction.type="hidden";
fAction.name="action";
fAction.value="delete";
nForm.appendChild(fAction);
//id=id
var fId=gen("INPUT");
fId.type="hidden";
fId.name="id";
fId.value=id;
nForm.appendChild(fId);
document.body.appendChild(nForm);
nForm.submit();
}
//------------------------------------------------------------------------------
FileName:Server.asp
version:0.03
仅Alpha版 无实用价值
//------------------------------------------------------------------------------
<!--#include file="inc/Class.asp"-->
<%
Response.CodePage=65001
Response.Expires = 0
If Not Admin.CheckPower(1) Then Response.Redirect "Error.asp":Response.End
Set DOM=Server.CreateObject("MSXML2.DOMDocument")
DOM.load(Request)
Dim oRoot
Set oRoot = DOM.selectSingleNode("//Root") '根节点
Dim ChannelCount '需要更新的用户总数
ChannelCount = oRoot.childNodes.length
Dim ID,Name,Price,Disable
Dim Res,ResCount
Res = 0
ResCount = 0
Dim BackString '用于返回到客户端
BackString="<DIV style='margin-top:10px;' align='left'><UL>"
On Error Resume Next
Dim Sql,i
'开始更新
DB_Connect
For i=0 To ChannelCount-1
ID = Str_Fix(oRoot.childNodes(i).getAttribute("_Flag"))
Name = Str_Fix(oRoot.childNodes(i).getAttribute("AN0"))
Price = Fix_Money(oRoot.childNodes(i).getAttribute("AN1"))
Disable = Eval(Str_Fix(oRoot.childNodes(i).getAttribute("AN2")))
If Disable Then Disable = 1 Else Disable = 0
Sql="Update [Channel] Set [Name]='"&Name&"',[Disabled] ="&Disable
If Price<>-1 Then Sql = Sql &",[Def_Price]="&Price '如果默认价格为0 或为空 或填写了非数字值 则不更新此字段
Sql = Sql & " WHERE [id] ="&ID
Conn.Execute Sql,Res
ResCount = ResCount + Res
Next
DB_DisConnect
BackString = BackString & "<LI>需要更新<Font color=red> "&ChannelCount&" </Font>通道数据</LI>"
'BackString = BackString & "<LI>"&Sql&"</LI>"
'BackString = BackString & "<LI>"&Res&"</LI>"
If ResCount>0 Then
BackString = BackString & "<LI>已成功更新了<Font color=red> "&ResCount&" </Font>通道数据</LI>"
Else
BackString = BackString & "<LI>没有更新任何通道数据!</LI>"
End If
If Err Then
BackString = BackString & "<LI>更新过程发生错误!错误信息如下:<BR>" & Err.Raise & "</LI>"
End If
Response.write BackString & "</UL></DIV>"
%>
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/mgzhenhong/archive/2006/02/15/599335.aspx
FileName:Client.js
version:0.3
2006-02-13
*/
//页面载入后 执行下面代码 初始化变量,并记录原始通道状态
//建立公共变量
var o_d;
var xmlRes;
var list_tbody = list_table.children.item(0).children;
var list_count = list_tbody.length; //当前页通道总数
list_count--;
list_count--;
//建立数组
var inputs = new Array(list_count)
for(i=0;i<list_count;i++){
inputs[i] = getn(list_tbody.item(i+1),"input"); //每行的Form控件组
getn(list_tbody.item(i+1),"select");
}
var n = new Array(list_count);
var o = new Array(list_count);
for (i=0;i<list_count;i++){
n[i] = new Array(inputs[0].length);
o[i] = new Array(inputs[0].length);
}
var _flag = new Array(list_count);
for(i=0;i<list_count;i++){
_flag[i] = list_tbody.item(i+1).children.item(0).innerText; //记录标志
for(j=0;j<inputs[0].length;j++){
if(inputs[i][j].tagName == "INPUT"){
switch (inputs[i][j].type){
case ""||"text"||"textarea"||"password"||"radio" : o[i][j] = inputs[i][j].defaultValue;break;
case "checkbox" : o[i][j] = inputs[i][j].checked;break;
default : o[i][j] = inputs[i][j].value;break;
}
}else{ //不是input 就是select
o[i][j] = inputs[i][j].options[inputs[i][j].selectedIndex].value;
}
}
}
//IsModified 判断表单数据是否有被修改过
function IsModified(){
for(i=0;i<list_count;i++){
for(j=0;j<inputs[0].length;j++){
if(inputs[i][j].tagName == "INPUT"){
switch (inputs[i][j].type){
case ""||"text"||"textarea"||"password"||"radio" : n[i][j] = inputs[i][j].value;break;
case "checkbox" : n[i][j] = inputs[i][j].checked;break;
default : n[i][j] = inputs[i][j].value;break;
}
}else{ //不是input 就是select
n[i][j] = inputs[i][j].options[inputs[i][j].selectedIndex].value;
}
}
}
var Resault = false; //是否修改的标志,初始化为真
for(i=0;i<list_count;i++){ //开始比较
//如果该行有一个表单被修改,设置修改标志为真,并返回
for(j=0;j<inputs[0].length;j++){
if(n[i][j]!=o[i][j]){Resault=true;}
if(Resault){break;}
}
}
return Resault;
}
//getn 根据tag返回对象的子对象集合
/*
p:指定对象
s:tag
*/
function getn(p,s){return p.getElementsByTagName(s);}
//gen 根据tag生成并返回一个网页元素
/*
s:tag
*/
function gen(s){return document.createElement(s);}
function takeit(){
if (!IsModified())
{
alert("当前并未修改任何数据,不需要提交!");
}else{
CreateDIV(); //遮罩层
CreateDOM(); //组织和提交数据
}
return false;
}
function CreateDIV(){
var ClientWidth = document.body.scrollWidth;
var ClientHeight = document.body.scrollHeight;
//开始生成透明遮罩层(用于禁止页面操作)
var nDIV = gen("DIV"); //生成一个div层(用于透明效果)
nDIV.style.position="absolute"; //设置层的定位方式
nDIV.style.zIndex="1";
nDIV.style.pixelLeft="0";
nDIV.style.pixelTop="0";
nDIV.style.pixelWidth=ClientWidth;
nDIV.style.pixelHeight=ClientHeight;
nDIV.style.filter="progid:DXImageTransform.Microsoft.Alpha(opacity=80)"; //设置不透明度
var nFrame=gen("IFRAME"); //生成一个新的iFrame(用于遮盖控件)
nFrame.frameBorder="0";
nFrame.style.pixelLeft="0";
nFrame.style.pixelTo="0";
nFrame.style.pixelWidth=ClientWidth;
nFrame.style.pixelHeight=ClientHeight;
nDIV.appendChild(nFrame);
document.body.appendChild(nDIV); //实例化
//开始生成文档数据显示层
var dDIV=gen("DIV"); //生成一个div层(用于显示文档数据)
dDIV.style.position="absolute";
dDIV.style.zIndex=2;
dDIV.style.pixelWidth="420";
dDIV.style.pixelHeight="80";
dDIV.style.pixelLeft=(ClientWidth-dDIV.style.pixelWidth)/2;
dDIV.style.pixelTop=(ClientHeight-dDIV.style.pixelHeight)/2;
var dTable=gen("TABLE"); //生成一个Table(用于格式化显示文档数据)
var dTbody=gen("TBODY")
var dTr=gen("TR");
var dTd=gen("TD");
dTd.style.pixelWidth=dDIV.style.pixelWidth;
dTd.style.pixelHeight=dDIV.style.pixelHeight;
dTd.style.pixelLeft=dDIV.style.pixelLeft;
dTd.style.pixelTop=dDIV.style.pixelTop;
dTd.align="center";
dTd.vAlign="middle";
dTd.style.backgroundColor="#AAAAAA";
dTd.style.border="1px solid #000000";
dTd.style.color="#FFFFFF";
dTd.innerHTML="正在更新数据...请稍后...";
dTr.appendChild(dTd);
dTbody.appendChild(dTr);
dTable.appendChild(dTbody);
dDIV.appendChild(dTable);
document.body.appendChild(dDIV); //实例化
o_d = dTd; //将数据层对象传递到公共变量
}
function CreateDOM(){
var DOM = new ActiveXObject("MSXML2.DOMDocument");
DOM.async=false;
DOM.resolveExternals=false;
//构造XML文件头
var Node=DOM.createProcessingInstruction("xml","version='1.0'");
DOM.appendChild(Node);
Node=null;
//构造Root节点
var Root=DOM.createElement("Root");
//加入Root节点
DOM.appendChild(Root);
//循环构造List节点
for(i=0;i<list_count;i++){
var Resault = false; //该行是否有改动的标志
for(j=0;j<inputs[0].length;j++){
Resault=n[i][j]!=o[i][j]?true:false;
if(Resault){break;}
}
if(Resault){ //如果有改动
var List = DOM.createElement("List");
//加入flag属性
var _Flag = DOM.createAttribute("_Flag");
_Flag.value = _flag[i]
List.setAttributeNode(_Flag)
//循环加入每个属性
for(j=0;j<inputs[0].length;j++){
var newAttributeName = "AN" + j; //生成一个属性名
var N = DOM.createAttribute(newAttributeName);
if(typeof(n[i][j])=="boolean"){
N.value = n[i][j]?"true":"false";
}else{
N.value = n[i][j];
}
List.setAttributeNode(N);
}
Root.appendChild(List);
}
}
var xmlHTTP=new ActiveXObject("Microsoft.XMLHTTP");
xmlHTTP.open("POST","Channel_List_xml.asp",false);
xmlHTTP.send(DOM);
xmlRes=xmlHTTP.responseText;
CallBack();
}
function CallBack(){
o_d.innerHTML=xmlRes+"<P>3秒后页面将刷新...</P>";
setTimeout("window.location.href=window.location.href",3000);
}
function Delete(id){
if(!confirm("警告!/n/n即将删除一条数据!! 此操作不可恢复!!/n/n是否继续?")){return}
var nForm = gen("FORM");
nForm.method="post";
nForm.action=window.location.href;
nForm.target="_self";
//action=delete
var fAction=gen("INPUT");
fAction.type="hidden";
fAction.name="action";
fAction.value="delete";
nForm.appendChild(fAction);
//id=id
var fId=gen("INPUT");
fId.type="hidden";
fId.name="id";
fId.value=id;
nForm.appendChild(fId);
document.body.appendChild(nForm);
nForm.submit();
}
//------------------------------------------------------------------------------
FileName:Server.asp
version:0.03
仅Alpha版 无实用价值
//------------------------------------------------------------------------------
<!--#include file="inc/Class.asp"-->
<%
Response.CodePage=65001
Response.Expires = 0
If Not Admin.CheckPower(1) Then Response.Redirect "Error.asp":Response.End
Set DOM=Server.CreateObject("MSXML2.DOMDocument")
DOM.load(Request)
Dim oRoot
Set oRoot = DOM.selectSingleNode("//Root") '根节点
Dim ChannelCount '需要更新的用户总数
ChannelCount = oRoot.childNodes.length
Dim ID,Name,Price,Disable
Dim Res,ResCount
Res = 0
ResCount = 0
Dim BackString '用于返回到客户端
BackString="<DIV style='margin-top:10px;' align='left'><UL>"
On Error Resume Next
Dim Sql,i
'开始更新
DB_Connect
For i=0 To ChannelCount-1
ID = Str_Fix(oRoot.childNodes(i).getAttribute("_Flag"))
Name = Str_Fix(oRoot.childNodes(i).getAttribute("AN0"))
Price = Fix_Money(oRoot.childNodes(i).getAttribute("AN1"))
Disable = Eval(Str_Fix(oRoot.childNodes(i).getAttribute("AN2")))
If Disable Then Disable = 1 Else Disable = 0
Sql="Update [Channel] Set [Name]='"&Name&"',[Disabled] ="&Disable
If Price<>-1 Then Sql = Sql &",[Def_Price]="&Price '如果默认价格为0 或为空 或填写了非数字值 则不更新此字段
Sql = Sql & " WHERE [id] ="&ID
Conn.Execute Sql,Res
ResCount = ResCount + Res
Next
DB_DisConnect
BackString = BackString & "<LI>需要更新<Font color=red> "&ChannelCount&" </Font>通道数据</LI>"
'BackString = BackString & "<LI>"&Sql&"</LI>"
'BackString = BackString & "<LI>"&Res&"</LI>"
If ResCount>0 Then
BackString = BackString & "<LI>已成功更新了<Font color=red> "&ResCount&" </Font>通道数据</LI>"
Else
BackString = BackString & "<LI>没有更新任何通道数据!</LI>"
End If
If Err Then
BackString = BackString & "<LI>更新过程发生错误!错误信息如下:<BR>" & Err.Raise & "</LI>"
End If
Response.write BackString & "</UL></DIV>"
%>
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/mgzhenhong/archive/2006/02/15/599335.aspx
相关文章推荐
- 用JavaScript实现form表单的数据提交--使用正则表达式对数据判断
- Jquery判断form表单数据是否变化
- Jquery-判断form表单数据是否变化
- jQuery:提交表单前判断表单是否被修改过
- easyui form表单提交自定义验证数据是否已存在
- 提交表单检测数据是否为空getElementById() onSubmit form
- PHP判断FORM表单或URL参数来的数据是否为整数的方法
- jQuery:提交表单前判断表单是否被修改过
- jQuery:提交表单前判断表单是否被修改过
- PHP判断FORM表单或URL参数来的数据是否为整数的方法
- JS判断form内元素是否被修改过
- 表单提交前判断表单是否被修改过
- 提交数据判断kindediter编辑器是否为空
- 模拟form表单的提交数据
- Ext中弹出框的form表单提交和接收返回数据
- Spring MVC中Controller如何获取Form表单提交的数据
- FORM表单无法提交JavaScript动态添加的表单元素
- 解析:使用easyui的form提交表单,在IE下出现类似附件下载时提示是否保存的现象
- 表单在提交前判断FCKEditor编辑框里是否有内容,如果没有,则弹出ALERT框提示。
- EXT.NET保存前判断数据是否修改