很久以前写的,随便贴贴//recordset.js Create a recordset model // modification history //------------------------------------------------- // 07 Jan 2003 by greg.t create file // 21 Feb 2003 by greg.t modify object//Format :: AddColumn(ContronName,IsNull,IsNullErrMsg,CheckLength,CheckLengthErrMsg,CheckFunction,CheckErrMsg)// Rule FunName List: // 1.Omit Bland Space : Ospace // 2.Check Column Length : ChkLength // 3.Check Letter and Number : IsEn // 4.Check Email : IsEmail // 5.Check Date : IsDate // 6.Check Number : IsNumber // 7.Check Only English : IsEnglisth // 8.Check not Chinese or all-letter : IsNoChinese // 9.You Only enter Chinese : IsChinese//delete recordset function Gr_DeleteRecord(){ if(confirm("Are you sure?")){ var sql="delete from "+this.STable+" where " for(var i=0;i<this.mykeywords.length;i++) sql+=this.mykeywords[i]+"='"+eval("document.all."+this.mykeywords[i]+".value")+"' and"; sql=sql.substr(0,sql.length-4); this.ClearData(); document.all.btn6.value=sql; document.all.btn5.click(); top.SubLeftFrame.document.location=top.SubLeftFrame.document.location;
} } function SetPriKey(){ for(var i=0;i<arguments.length;i++) this.mykeywords[this.mykeywords.length++]=arguments[i]; }
function CancelOperator(){ for(i=0;i<this.buffers.length;i++){ eval("document.all."+this.Columns[i].Name).value=this.buffers[i]; eval("document.all."+this.Columns[i].Name).readOnly=true; } this.buffers=new Array(); this.NowStatus=""; setnip=3; for(i=0;i<this.status.length;i++ ){ if( (this.status[i].OperType=="update") || (this.status[i].OperType=="Cancel") ) eval("document.all."+this.status[i].Control).disabled=true; else eval("document.all."+this.status[i].Control).disabled=false; } } function ClearAllData(){ for(i=0;i<this.Columns.length;i++) eval("document.all."+this.Columns[i].Name).value=""; return true; } function StoreAllDta(){ for(i=0;i<this.Columns.length;i++){ this.buffers[this.buffers.length++]=eval("document.all."+this.Columns[i].Name).value; 秨 eval("document.all."+this.Columns[i].Name).readOnly=false; } return true; }//Set button Status function setbuttonStatus(){ this.NowStatus=arguments[0]; setnip=2; this.StoreData(); if(arguments[0]=="add") this.ClearData(); if(arguments[0]=="modify") for(var i=0;i<this.mykeywords.length;i++) eval("document.all."+this.mykeywords[i]).readOnly=true; for(i=0;i<this.status.length;i++ ){ if( (this.status[i].OperType=="update") || (this.status[i].OperType=="Cancel") ) eval("document.all."+this.status[i].Control).disabled=false; else eval("document.all."+this.status[i].Control).disabled=true; } } function InitialStatus(){ for (i=0;i<arguments.length ;i++ ){ var obj=new Object(); obj.OperType=arguments[i]; obj.Control=arguments[++i]; this.status[this.status.length++]=obj; } }//Check all of the Status function CheckStatus(){}//Omit Blank Space function Ospace(){ eval(arguments[0]+".value="+arguments[0]+".value.replace(/(^\\s*)|(\\s*$)/g, \"\")"); if(eval(arguments[0]+".value.length")==0) return false; else return true; } //Check Column Length function ChkLength(){ if(eval(arguments[0]+".value.length")>arguments[1]) return false; else return true; }//Check Letter and Number function IsEn(){ if(arguments[0].value.length==0) return true; var reg=/^[a-z0-9.]*$/gi; if(reg.test(arguments[0].value)==false) return "You must enter Letter or Number !"; else return true; }//Check E-mail function IsEmail(){ if(arguments[0].value.length==0) return true; var reg = /^([a-z]){1,}([\.a-z0-9_\-]){1,}([a-z0-9]){1,}@([a-z0-9_-]){3,}(\.([a-z0-9]){2,4}){1,2}$/gi; if(reg.test(arguments[0].value)==false){ return "You must enter E-mail !"; } else return true; }//Check Date function IsDate(){ if(arguments[0].value.length==0) return true; var reg=/^(\d{4})(-|\/)(0?[1-9]|1[0-2])(-|\/)(0?[1-9]|[12][0-9]|3[01])$/g; var r=reg.exec(arguments[0].value); if(r==null) return "You must enter Date !"; var d=new Date(r[1], r[3]-1,r[5]); var newStr=d.getFullYear()+r[2]+(d.getMonth()+1)+r[2]+d.getDate(); var reg=/(\/|-)(0*)( *)([1-9])/g; var t=arguments[0].value.replace(reg,'$1$4'); if (newStr==t) return true; else return "You must enter Date !"; }//Check Number function IsNumber(){ if(arguments[0].value.length==0) return true; if(arguments[0].value*1==arguments[0].value) return true; else return "You must enter number !"; } //Check only enter English function IsEnglish(){ if(arguments[0].value.length==0) return true; var reg=/^[a-z]*$/gi; if(reg.test(arguments[0].value)) return true; else return "You only enter English !"; }//You Only enter Chinese function IsChinese(){ if(arguments[0].value.length==0) return true; var reg = /[^\u4E00-\u9FA5]/g; if(reg.test(arguments[0].value)==false) return true; else return "You only enter Chinese !"; }//you don't enter chinese or all-letter function IsNoChinese(){ if(arguments[0].value.length==0) return true; var reg=/[\u4E00-\u9FA5]|[\uFE30-\uFFA0]/gi; if(reg.test(arguments[0].value)==false) return true; else return "You don't enter chinese or all-letter !"; }//Add New Recordset function UpdateData(){ if(this.RuleCheck()==false){ return false; } var sql_1=""; var sql_2=""; if(this.NowStatus=="add"){ //add sql for(var i=0;i<this.Columns.length;i++){ sql_1+=this.Columns[i].Name+","; if(eval("document.all."+this.Columns[i].Name+".value.length")>0) sql_2+="'"+eval("document.all."+this.Columns[i].Name+".value")+"',"; else sql_2+="null,"; } sql_1="insert into "+this.STable+"("+sql_1.substr(0,sql_1.length-1)+") values("+sql_2.substr(0,sql_2.length-1)+")"; document.all.btn6.value=sql_1; this.NowStatus=""; document.all.btn5.click(); top.SubLeftFrame.document.location=top.SubLeftFrame.document.location; } if(this.NowStatus=="modify"){ //update sql var tmp=""; for(var i=0;i<this.mykeywords.length;i++) tmp+=this.mykeywords[i]; for(var i=0;i<this.Columns.length;i++) if(tmp.indexOf(this.Columns[i].Name,0)==-1){ if(eval("document.all."+this.Columns[i].Name+".value.length")>0) sql_1+=this.Columns[i].Name+"='"+eval("document.all."+this.Columns[i].Name+".value")+"',"; else sql_1+=this.Columns[i].Name+"=null,"; } for(var i=0;i<this.mykeywords.length;i++){ sql_2+=this.mykeywords[i]+"='"+eval("document.all."+this.mykeywords[i]+".value")+"' and" } sql_1="update "+this.STable+" set "+sql_1.substr(0,sql_1.length-1)+" where "+sql_2.substr(0,sql_2.length-4) this.NowStatus=""; document.all.btn6.value=sql_1; document.all.btn5.click(); top.SubLeftFrame.document.location=top.SubLeftFrame.document.location; } return true; }//Check Rule with Object function RuleCheck(){ for(var i=0;i<this.Columns.length;i++){ var j=this.Columns[i]; var tCont="document.all."+j.Name; if(j.isNull=="false"){ //Check IsNull if(Ospace(tCont)==false){ alert(j.IsNullErrMsg); eval(tCont+".focus()"); eval(tCont+".select()"); return false; } } if(ChkLength(tCont,j.lengs)==false){ alert(j.ChecklengthErrMsg); eval(tCont+".focus()"); eval(tCont+".select()"); return false; }
if(j.CheckFun){ var k=eval(j.CheckFun+"("+tCont+")"); if(k!=true){ if(!j.CheckFunErrMsg){ j.CheckFunErrMsg=k; } alert(j.CheckFunErrMsg); eval(tCont+".focus()"); eval(tCont+".select()"); return false; } } } return true; }//Add rule with the column function AddColumn(){ var obj=new Object(); obj.Name=arguments[0]; obj.isNull=arguments[1]; //isnull progerty if(arguments[2].length) obj.IsNullErrMsg=arguments[2]; else obj.IsNullErrMsg="You must enter content!"; obj.lengs=arguments[3]; if(arguments[4]) obj.ChecklengthErrMsg=arguments[4]; else obj.ChecklengthErrMsg="You have over Max-length "+arguments[3]+" !"; obj.CheckFun=arguments[5]; if(arguments[6]) obj.CheckFunErrMsg=arguments[6]; else obj.CheckFunErrMsg=""; this.Columns[this.Columns.length++]=obj; return obj; }//Create Object Recordset function RecordSet(SourTable){ //膀セ妮┦ this.point=0; this.STable=SourTable; this.NowStatus=""; this.status=new Array(); this.mykeywords=new Array(); this.Columns=new Array(); this.buffers=new Array(); this.AddColumn=AddColumn; this.SetPriKey=SetPriKey; this.RuleCheck=RuleCheck; this.InitSta=InitialStatus; this.SetStatus=setbuttonStatus; this.ChkSta=CheckStatus; this.StoreData=StoreAllDta; this.ClearData=ClearAllData; this.UpdateData=UpdateData; this.DeleteRecord=Gr_DeleteRecord; this.CanOper=CancelOperator; }var setnip=3; var oPopup=window.createPopup();
// modification history
//-------------------------------------------------
// 07 Jan 2003 by greg.t create file
// 21 Feb 2003 by greg.t modify object//Format :: AddColumn(ContronName,IsNull,IsNullErrMsg,CheckLength,CheckLengthErrMsg,CheckFunction,CheckErrMsg)// Rule FunName List:
// 1.Omit Bland Space : Ospace
// 2.Check Column Length : ChkLength
// 3.Check Letter and Number : IsEn
// 4.Check Email : IsEmail
// 5.Check Date : IsDate
// 6.Check Number : IsNumber
// 7.Check Only English : IsEnglisth
// 8.Check not Chinese or all-letter : IsNoChinese
// 9.You Only enter Chinese : IsChinese//delete recordset
function Gr_DeleteRecord(){
if(confirm("Are you sure?")){
var sql="delete from "+this.STable+" where "
for(var i=0;i<this.mykeywords.length;i++)
sql+=this.mykeywords[i]+"='"+eval("document.all."+this.mykeywords[i]+".value")+"' and";
sql=sql.substr(0,sql.length-4);
this.ClearData();
document.all.btn6.value=sql;
document.all.btn5.click();
top.SubLeftFrame.document.location=top.SubLeftFrame.document.location;
}
}
function SetPriKey(){
for(var i=0;i<arguments.length;i++)
this.mykeywords[this.mykeywords.length++]=arguments[i];
}
eval("document.all."+this.Columns[i].Name).value=this.buffers[i];
eval("document.all."+this.Columns[i].Name).readOnly=true;
}
this.buffers=new Array();
this.NowStatus=""; setnip=3;
for(i=0;i<this.status.length;i++ ){
if( (this.status[i].OperType=="update") || (this.status[i].OperType=="Cancel") )
eval("document.all."+this.status[i].Control).disabled=true;
else
eval("document.all."+this.status[i].Control).disabled=false;
}
}
function ClearAllData(){
for(i=0;i<this.Columns.length;i++)
eval("document.all."+this.Columns[i].Name).value="";
return true;
} function StoreAllDta(){
for(i=0;i<this.Columns.length;i++){
this.buffers[this.buffers.length++]=eval("document.all."+this.Columns[i].Name).value;
秨
eval("document.all."+this.Columns[i].Name).readOnly=false;
}
return true;
}//Set button Status
function setbuttonStatus(){
this.NowStatus=arguments[0];
setnip=2;
this.StoreData();
if(arguments[0]=="add")
this.ClearData();
if(arguments[0]=="modify")
for(var i=0;i<this.mykeywords.length;i++)
eval("document.all."+this.mykeywords[i]).readOnly=true;
for(i=0;i<this.status.length;i++ ){
if( (this.status[i].OperType=="update") || (this.status[i].OperType=="Cancel") )
eval("document.all."+this.status[i].Control).disabled=false;
else
eval("document.all."+this.status[i].Control).disabled=true;
}
}
function InitialStatus(){ for (i=0;i<arguments.length ;i++ ){
var obj=new Object();
obj.OperType=arguments[i];
obj.Control=arguments[++i];
this.status[this.status.length++]=obj;
}
}//Check all of the Status
function CheckStatus(){}//Omit Blank Space
function Ospace(){
eval(arguments[0]+".value="+arguments[0]+".value.replace(/(^\\s*)|(\\s*$)/g, \"\")");
if(eval(arguments[0]+".value.length")==0)
return false;
else
return true;
}
//Check Column Length
function ChkLength(){
if(eval(arguments[0]+".value.length")>arguments[1])
return false;
else
return true;
}//Check Letter and Number
function IsEn(){
if(arguments[0].value.length==0)
return true;
var reg=/^[a-z0-9.]*$/gi;
if(reg.test(arguments[0].value)==false)
return "You must enter Letter or Number !";
else
return true;
}//Check E-mail
function IsEmail(){
if(arguments[0].value.length==0)
return true;
var reg = /^([a-z]){1,}([\.a-z0-9_\-]){1,}([a-z0-9]){1,}@([a-z0-9_-]){3,}(\.([a-z0-9]){2,4}){1,2}$/gi;
if(reg.test(arguments[0].value)==false){
return "You must enter E-mail !";
}
else
return true;
}//Check Date
function IsDate(){
if(arguments[0].value.length==0)
return true;
var reg=/^(\d{4})(-|\/)(0?[1-9]|1[0-2])(-|\/)(0?[1-9]|[12][0-9]|3[01])$/g;
var r=reg.exec(arguments[0].value);
if(r==null)
return "You must enter Date !";
var d=new Date(r[1], r[3]-1,r[5]);
var newStr=d.getFullYear()+r[2]+(d.getMonth()+1)+r[2]+d.getDate();
var reg=/(\/|-)(0*)( *)([1-9])/g;
var t=arguments[0].value.replace(reg,'$1$4');
if (newStr==t)
return true;
else
return "You must enter Date !";
}//Check Number
function IsNumber(){
if(arguments[0].value.length==0)
return true;
if(arguments[0].value*1==arguments[0].value)
return true;
else
return "You must enter number !";
}
//Check only enter English
function IsEnglish(){
if(arguments[0].value.length==0)
return true;
var reg=/^[a-z]*$/gi;
if(reg.test(arguments[0].value))
return true;
else
return "You only enter English !";
}//You Only enter Chinese
function IsChinese(){
if(arguments[0].value.length==0)
return true;
var reg = /[^\u4E00-\u9FA5]/g;
if(reg.test(arguments[0].value)==false)
return true;
else
return "You only enter Chinese !";
}//you don't enter chinese or all-letter
function IsNoChinese(){
if(arguments[0].value.length==0)
return true;
var reg=/[\u4E00-\u9FA5]|[\uFE30-\uFFA0]/gi;
if(reg.test(arguments[0].value)==false)
return true;
else
return "You don't enter chinese or all-letter !";
}//Add New Recordset
function UpdateData(){
if(this.RuleCheck()==false){
return false;
}
var sql_1="";
var sql_2="";
if(this.NowStatus=="add"){ //add sql
for(var i=0;i<this.Columns.length;i++){
sql_1+=this.Columns[i].Name+",";
if(eval("document.all."+this.Columns[i].Name+".value.length")>0)
sql_2+="'"+eval("document.all."+this.Columns[i].Name+".value")+"',";
else
sql_2+="null,";
}
sql_1="insert into "+this.STable+"("+sql_1.substr(0,sql_1.length-1)+") values("+sql_2.substr(0,sql_2.length-1)+")";
document.all.btn6.value=sql_1;
this.NowStatus="";
document.all.btn5.click();
top.SubLeftFrame.document.location=top.SubLeftFrame.document.location;
} if(this.NowStatus=="modify"){ //update sql
var tmp="";
for(var i=0;i<this.mykeywords.length;i++)
tmp+=this.mykeywords[i];
for(var i=0;i<this.Columns.length;i++)
if(tmp.indexOf(this.Columns[i].Name,0)==-1){
if(eval("document.all."+this.Columns[i].Name+".value.length")>0)
sql_1+=this.Columns[i].Name+"='"+eval("document.all."+this.Columns[i].Name+".value")+"',";
else
sql_1+=this.Columns[i].Name+"=null,";
}
for(var i=0;i<this.mykeywords.length;i++){
sql_2+=this.mykeywords[i]+"='"+eval("document.all."+this.mykeywords[i]+".value")+"' and"
}
sql_1="update "+this.STable+" set "+sql_1.substr(0,sql_1.length-1)+" where "+sql_2.substr(0,sql_2.length-4)
this.NowStatus="";
document.all.btn6.value=sql_1;
document.all.btn5.click();
top.SubLeftFrame.document.location=top.SubLeftFrame.document.location;
}
return true;
}//Check Rule with Object
function RuleCheck(){
for(var i=0;i<this.Columns.length;i++){
var j=this.Columns[i];
var tCont="document.all."+j.Name;
if(j.isNull=="false"){ //Check IsNull
if(Ospace(tCont)==false){
alert(j.IsNullErrMsg);
eval(tCont+".focus()");
eval(tCont+".select()");
return false;
}
}
if(ChkLength(tCont,j.lengs)==false){
alert(j.ChecklengthErrMsg);
eval(tCont+".focus()");
eval(tCont+".select()");
return false;
}
if(j.CheckFun){
var k=eval(j.CheckFun+"("+tCont+")");
if(k!=true){
if(!j.CheckFunErrMsg){
j.CheckFunErrMsg=k;
}
alert(j.CheckFunErrMsg);
eval(tCont+".focus()");
eval(tCont+".select()");
return false;
}
}
}
return true;
}//Add rule with the column
function AddColumn(){
var obj=new Object();
obj.Name=arguments[0];
obj.isNull=arguments[1]; //isnull progerty
if(arguments[2].length) obj.IsNullErrMsg=arguments[2];
else obj.IsNullErrMsg="You must enter content!";
obj.lengs=arguments[3];
if(arguments[4]) obj.ChecklengthErrMsg=arguments[4];
else obj.ChecklengthErrMsg="You have over Max-length "+arguments[3]+" !";
obj.CheckFun=arguments[5];
if(arguments[6]) obj.CheckFunErrMsg=arguments[6];
else obj.CheckFunErrMsg="";
this.Columns[this.Columns.length++]=obj;
return obj;
}//Create Object Recordset
function RecordSet(SourTable){
//膀セ妮┦
this.point=0;
this.STable=SourTable;
this.NowStatus="";
this.status=new Array();
this.mykeywords=new Array();
this.Columns=new Array();
this.buffers=new Array();
this.AddColumn=AddColumn;
this.SetPriKey=SetPriKey;
this.RuleCheck=RuleCheck;
this.InitSta=InitialStatus;
this.SetStatus=setbuttonStatus;
this.ChkSta=CheckStatus;
this.StoreData=StoreAllDta;
this.ClearData=ClearAllData;
this.UpdateData=UpdateData;
this.DeleteRecord=Gr_DeleteRecord;
this.CanOper=CancelOperator;
}var setnip=3;
var oPopup=window.createPopup();
var rs=new RecordSet("renshi");
rs.AddColumn("pnl_no","false","セ逆ぃ!",8,"眤ぃ禬筁8才!","","");
rs.AddColumn("p_name","false","セ逆ぃ!",20,"眤ぃ禬筁20才!","","");
rs.AddColumn("sex","false","セ逆ぃ!",1,"眤ぃ禬筁1才!","","");
rs.AddColumn("born_date","false","セ逆ぃ!",10,"眤ぃ禬筁10才!","IsDate","ゲ斗恶糶タ絋ら戳Α!");
rs.AddColumn("job","false","セ逆ぃ!",10,"眤ぃ禬筁10才!","","");
rs.AddColumn("id_type","false","セ逆ぃ!",20,"眤ぃ禬筁20才!","","");
rs.AddColumn("zip","false","セ逆ぃ!",6,"眤ぃ禬筁6才!","","");
rs.AddColumn("mynational","false","セ逆ぃ!",40,"眤ぃ禬筁40才!","","");
rs.AddColumn("mobil","false","セ逆ぃ!",14,"眤ぃ禬筁14才!","IsNumber","眤ゲ斗恶糶タ絋も诀腹絏");
rs.AddColumn("address","false","セ逆ぃ!",40,"眤ぃ禬筁40才!","","");
rs.AddColumn("email","true","セ逆ぃ!",20,"眤ぃ禬筁20才!","IsEmail","");
rs.SetKeyWord("pnl_no");
rs.InitSta("add","btn0","modify","btn1","delete","btn2","update","btn3","Cancel","btn4");
</script>
我就是看了书以后,发现对构造对象不懂。构造是什么意思?
由 new 运算符来调用此函数。
通过 this 关键字将新创建对象的地址传递到此函数。