在bs开发中经常用到的javaScript技术。2

    技术2022-05-11  153

    有时候还需要自由编辑表格---给大家一个自由编辑表格的小例子,写的有点乱,呵呵:)

    //===============================start================================

    <HTML><HEAD><META http-equiv="Content-Type" content="text/html; charset=gb2312"><TITLE>测试修改表格</TITLE><STYLE>/*提示层的样式*/div{  BORDER-RIGHT: #80c144 1px solid;  BORDER-TOP: #80c144 1px solid;  VISIBILITY: hidden;  BORDER-LEFT: #80c144 1px solid;  CURSOR: default;  LINE-HEIGHT: 20px;  BORDER-BOTTOM: #80c144 1px solid;  FONT-FAMILY: 宋体;  font-size:12px;  POSITION: absolute;  BACKGROUND-COLOR: #f6f6f6;  TOP:30px;  LEFT:30px;}/*tr的样式*/tr{    font-family: "宋体";    color: #000000;    background-color: #C1DBF5;    font-size: 12px}/*table脚注样式*/.TrFoot{    FONT-SIZE: 12px;    font-family:"宋体", "Verdana", "Arial";    BACKGROUND-COLOR: #6699CC;    COLOR:#FFFFFF;    height: 25;}/*trhead属性*/.TrHead{    FONT-SIZE: 13px;    font-family:"宋体", "Verdana", "Arial";    BACKGROUND-COLOR: #77AADD;    COLOR:#FFFFFF;    height: 25;}/*文本框样式*/INPUT{    BORDER-COLOR: #AACEF7 #AACEF7 #AACEF7 #AACEF7;    BORDER-RIGHT: 1px solid;    BORDER-TOP: 1px solid;    BORDER-LEFT: 1px solid;    BORDER-BOTTOM: 1px solid;    FONT-SIZE: 12px;    FONT-FAMILY: "宋体","Verdana";    color: #000000;    BACKGROUND-COLOR: #E9EFF5;}/*button样式*/button{    BORDER-COLOR: #AACEF7 #AACEF7 #AACEF7 #AACEF7;    BACKGROUND-COLOR: #D5E4F3;    CURSOR: hand;    FONT-SIZE:12px;    BORDER-RIGHT: 1px solid;    BORDER-TOP: 1px solid;    BORDER-LEFT: 1px solid;    BORDER-BOTTOM: 1px solid;    COLOR: #000000;}</STYLE></HEAD><BODY><SCRIPT language = "JavaScript"><!--全局变量//标志位,值为false代表未打开一个编辑框,值为true为已经打开一个编辑框开始编辑var editer_table_cell_tag = false;//开启编辑功能标志,值为true时为允许编辑var run_edit_flag = false;//--></SCRIPT>

    <SCRIPT language = "JavaScript"><!--/** * 编辑表格函数 * 单击某个单元格可以对里面的内容进行自由编辑 * @para tableID 为要编辑的table的id * @para noEdiID 为不要编辑的td的ID,比如说table的标题 * 可以写为<TD id="no_editer">自由编辑表格</TD> * 此时该td不可编辑 */function editerTableCell(tableId,noEdiId){ var tdObject = event.srcElement; var tObject = ((tdObject.parentNode).parentNode).parentNode; if(tObject.id == tableId &&tdObject.id != noEdiId&&editer_table_cell_tag == false && run_edit_flag == true) {  tdObject.innerHTML = "<input type=text id=edit_table_txt name=edit_table_txt value="+tdObject.innerText+" size='15' onKeyDown='enterToTab()'>  <input type=button value=' 确定 ' οnclick='certainEdit()'>";  edit_table_txt.focus();  edit_table_txt.select();  editer_table_cell_tag = true;  //修改按钮提示信息  editTip.innerText = "请先点确定按钮确认修改!";   } else {  return false; }}

    /** * 确定修改 */function certainEdit(){ var bObject = event.srcElement; var tdObject = bObject.parentNode;  var txtObject = tdObject.firstChild; tdObject.innerHTML = txtObject.value; //代表编辑框已经关闭 editer_table_cell_tag = false; //修改按钮提示信息 editTip.innerText = "请单击某个单元格进行编辑!";}

    function enterToTab(){    if(event.srcElement.type != 'button' && event.srcElement.type != 'textarea'       && event.keyCode == 13)    {        event.keyCode = 9;    }}

    /** * 控制是否编辑 */function editStart(){ if(event.srcElement.value == "开始编辑") {  event.srcElement.value = "编辑完成";  run_edit_flag = true; } else {  //如果当前没有编辑框,则编辑成功,否则,无法提交  //必须按确定按钮后才能正常提交  if(editer_table_cell_tag == false)  {   alert("编辑成功结束!");   event.srcElement.value = "开始编辑";   run_edit_flag = false;  } }}

    /** * 根据不同的按钮提供不同的提示信息 */function showTip(){ if(event.srcElement.value == "编辑完成") {  editTip.style.top = event.y + 15;  editTip.style.left = event.x + 12;  editTip.style.visibility = "visible";   } else {  editTip.style.visibility = "hidden";    } }--></SCRIPT><TABLE id="editer_table" width="100%" align="center"     οnclick="editerTableCell('editer_table','no_editer')">      <TR class="TrHead">  <TD colspan="3" align="center" id="no_editer">自由编辑表格</TD>   </TR> <TR>  <TD width="33%">单击开始编辑按钮,然后点击各单元格编辑</TD>  <TD width="33%">2</TD>  <TD width="33%">3</TD> </TR> <TR>  <TD width="33%">4</TD>  <TD width="33%">5</TD>  <TD width="33%">6</TD> </TR> <TR>  <TD width="33%">one</TD>  <TD width="33%">two</TD>  <TD width="33%">three</TD> </TR> <TR>  <TD width="33%">four</TD>  <TD width="33%">five</TD>  <TD width="33%">six</TD> </TR>      <TR class="TrFoot">  <TD colspan="3" align="center" id="no_editer">   <INPUT type="button" class="bt" value="开始编辑" onClick="editStart()" onMouseOver="showTip()" onMouseMove="showTip()" onMouseOut="editTip.style.visibility = 'hidden';">  </TD> </TR> </TABLE></BODY><DIV id="editTip">请单击某个单元格进行编辑!</DIV> </HTML>

    //一下是取数据的类//Obj参数指定数据的来源(限定Table),默认第一行为字段名称行//GetTableData类提供MoveNext方法,参数是表的行向上或向下移动的位数,正数向下移动,负数向上.//GetFieldData方法获得指定的列名的数据//Sort_desc方法对指定的列按降序排列//Sort_asc方法对指定的列按升序排列//GetData方法返回字段值为特定值的数据数组,提供数据,可以在外部进行其他处理//Delete方法删除当前记录,数组减少一行//初始化,Obj:table的名字,Leftlen:左面多余数据长度,Rightlen:右面多余数据长度,function GetTableData(Obj,LeftLen,RightLen){var MyObj=document.all(Obj);var iRow=MyObj.rows.length;var iLen=MyObj.rows[0].cells.length;var i,j;

    TableData=new Array();  for (i=0;i< iRow;i++){   TableData[i]=new Array();   for (j=0;j<iLen;j++){   TableStr=MyObj.rows(i).cells(j).innerText;   TableStr=TableStr.substring(LeftLen, TableStr.length-RightLen).Trim();   TableStr=TableStr.replace(/ /gi,"").replace(//r/n/ig,"");   TableData[i][j]=TableStr;   }   }    this.TableData=TableData;   this.cols=this.TableData[0].length;  this.rows=this.TableData.length;  this.rowindex=0;}

    function movenext(Step){if (this.rowindex>=this.rows){return}

    if (Step=="" || typeof(Step)=="undefined") { if (this.rowindex<this.rows-1) this.rowindex++; return;

    } else{  if (this.rowindex + Step<=this.rows-1 && this.rowindex + Step>=0 ){  this.rowindex=this.rowindex + Step;  }  else  {  if (this.rowindex + Step<0){   this.rowindex= 0;   return;   }  if (this.rowindex + Step>this.rows-1){   this.rowindex= this.rows-1;   return;   }  } }}

    function getfielddata(Field){var colindex=-1;var i=0; if (typeof(Field) == "number"){   colindex=Field;  } else { for (i=0;i<this.cols && this.rowindex<this.rows ;i++){   if (this.TableData[0][i]==Field){   colindex=i;   break;   }    } }  if (colindex!=-1) {  return this.TableData[this.rowindex][colindex];  }

    }

    function sort_desc(){//降序 var colindex=-1; var highindex=-1; desc_array=new Array(); var i,j;for (n=0; n<arguments.length; n++){ Field=arguments[arguments.length-1-n]; for (i=0;i<this.cols;i++){  if (this.TableData[0][i]==Field){  colindex=i;  break;  }   }   if ( colindex==-1 )  return;   else  {  desc_array[0]=this.TableData[0];  for(i=1;i<this.rows;i++){  desc_array[i]=this.TableData[1];  highindex=1;   for(j=1;j<this.TableData.length;j++){      if  (desc_array[i][colindex]<this.TableData[j][colindex]){       desc_array[i]=this.TableData[j];         highindex=j;    }       }     if (highindex!=-1)     this.TableData=this.TableData.slice(0,highindex).concat(this.TableData.slice(highindex+1,this.TableData.length));                        } }

      this.TableData=desc_array;} return;}

    function sort_asc(){//升序 var colindex=-1; var highindex=-1; var i,j;for (n=0; n<arguments.length; n++){   asc_array=new Array();   Field=arguments[arguments.length-1-n];   for (i=0;i<this.cols;i++){    if (this.TableData[0][i]==Field){    colindex=i;    break;    }     }   if ( colindex==-1 )     return;   else     {     asc_array[0]=this.TableData[0];     for(i=1;i<this.rows;i++){     asc_array[i]=this.TableData[1];     highindex=1;      for(j=1;j<this.TableData.length;j++){//找出最小的列值         if  (asc_array[i][colindex]>this.TableData[j][colindex]){          asc_array[i]=this.TableData[j];            highindex=j;                  }                 }         if (highindex!=-1)         this.TableData=this.TableData.slice(0,highindex).concat(this.TableData.slice(highindex+1,this.TableData.length));                                     }     }

         this.TableData=asc_array; } return;}

    function getData(Field,FieldValue){var colindex=-1;var i,j;

    GetData=new Array();  if (typeof(Field)=="undefined" || typeof(FieldValue)=="undefined" ){  return this.TableData;  }     for(j=0;j<this.cols;j++){      if  (this.TableData[0][j]==Field){     colindex=j;     }   }   if (colindex!=-1){      for(i=1;i<this.rows;i++){      if  (this.TableData[i][colindex]==FieldValue){     GetData[i]=new Array();     GetData[i]=this.TableData[i];      }   }   }   return GetData;}function DeletE(){this.TableData=this.TableData.slice(0,this.rowindex).concat(this.TableData.slice(this.rowindex+1,this.TableData.length));                      this.rows=this.TableData.length;return;}function updateField(Field,FieldValue){var colindex=-1;var i=0; if (typeof(Field) == "number"){   colindex=Field;  } else { for (i=0;i<this.cols && this.rowindex<this.rows ;i++){   if (this.TableData[0][i]==Field){   colindex=i;   break;   }    } } if (colindex!=-1) {  this.TableData[this.rowindex][colindex]=FieldValue;  }

    }function movefirst(){this.rowindex=0;}function movelast(){this.rowindex=this.rows-1;}function String.prototype.Trim() {return this.replace(/(^/s*)|(/s*$)/g,"");}GetTableData.prototype.MoveNext = movenext;GetTableData.prototype.GetFieldData = getfielddata;GetTableData.prototype.Sort_asc = sort_asc;GetTableData.prototype.Sort_desc = sort_desc;GetTableData.prototype.GetData = getData;GetTableData.prototype.Delete = DeletE;GetTableData.prototype.UpdateField = updateField;GetTableData.prototype.MoveFirst = movefirst;

    具体的例子:http://202.119.73.208/NetEAn/com/test/jsprint.htm*******************************************************************************************************************************************************************************************************************<%'********************************************'函数功能:正则表达式校验'参数patrn:要校验的类型'   "User"   - 用户名'   "Truename"  - 英文姓名'   "Passwd"  - 密码'   "Tel"   - 电话/传真'   "Mobil"   - 手机'   "Date"   - 日期(格式:yyyy-mm-dd)'   "Email"   - 电子邮件'   "Postalcode" - 邮政编码'   "Search"  - 搜索关键字'   "Int"   - 整数'参数strng:要校验的字串'返回值:校验结果,正确返回true,错误返回false'********************************************Function IsVerify(patrn,strng) strng=Trim(strng) Select Case patrn  Case "User" '用户名   patrn="^[a-z]{1}([a-z0-9]|[._]){2,19}$"  Case "Truename" '英文姓名   patrn="^[a-zA-Z]{1,30}$"  Case "Passwd"  '密码   patrn="^(/w){6,20}$"  Case "Tel"   '电话/传真   patrn="^[+]{0,1}(/d){1,3}[ ]?([-]?((/d)|[ ]){1,12})+$"  Case "Mobil"  '手机   patrn="^(/d)+[-]?(/d){6,12}$"  Case "Date"   '日期(格式:yyyy-mm-dd)   patrn="^[12]{1}(/d){3}[-][01]?(/d){1}[-][0123]?(/d){1}$"  Case "Email"  '电子邮件   patrn="^((/w)|[-]|[.])+@(((/w)|[-])+[.])+[a-z]{2,4}$"  Case "Postalcode"  '邮政编码   patrn="^[a-z0-9 ]{3,12}$"  Case "Search"  '搜索关键字   patrn="^[^`~!@#$%^&*()+=|///[/]/{/}:;/'/,.<>/?]{1}[^`~!@$%^&()+=|///[/]/{/}:;/'/,.<>?]{0,19}$"  Case "Int"  '整数   patrn="^[1-9]{1}[0-9]{0,6}$"  Case "Array"   patrn="^[0-9]{1}([0-9]|[/,]){0,150}$" End Select Dim regEx Dim Match Set regEx = New RegExp regEx.Pattern = patrn regEx.IgnoreCase = True regEx.Global = True Matches = regEx.test(strng) IsVerify = Matches Set regEx = NothingEnd Function

    '********************************************'函数功能:对输入框的特殊字串进行过滤保存'参数strPass:过滤前的字符串'返回值:过滤后的字符串'********************************************Function SQLencode(byVal strPass) strPass = Replace(strPass, "&", "&") strPass = Replace(strPass, "<", "<") strPass = Replace(strPass, ">", ">") strPass = Replace(strPass, """", """) strPass = Replace(strPass, "'", "'") strPass = Replace(strPass, "  ", " ") strPass = Replace(strPass,chr(13)&chr(10),"<br/>") SQLencode = strPassEnd Function

    '********************************************'函数功能:对SQLencode函数过滤后的字符串进行还原'参数strPass:经过过滤后的字符串'返回值:还原的过滤前的字符串'********************************************Function SQLdecode(byVal strPass) If Not isNull(strPass) Then  strPass = Replace(strPass, "<", "<")  strPass = Replace(strPass, ">", ">") strPass = Replace(strPass, ""","""" ) strPass = Replace(strPass, "'","'" )  strPass = Replace(strPass,"<br/>",chr(13)&chr(10)) End If SQLdecode = strPassEnd Function

    '********************************************'函数功能:生成随机密码(字符为数字与大小写字母集合)'参数length:密码长度'返回值:随机密码'********************************************Function random(length) Dim n,str rnds="" Randomize For i=1 To length  n=Int(75*Rnd+48)  If (n>57 and n<65) Or (n>90 and n<97) Then   i=i-1  Else   rnds=rnds&Chr(n)  End If Next random=rndsEnd Function

    '********************************************'函数功能:对密码进行加密/解密(最大长度为15位)'********************************************Function Encrypt(preString) Dim pwds,s pwds="" s=Left(preString,15) For i=1 To Len(s)  seed=170-Asc(Mid(s,i,1))-i  pwds=pwds & Chr(seed) Next Encrypt=pwdsEnd Function

    '********************************************'函数功能:格式化当前时间字串'参数:无'返回值:返回当前时间的纯数字字符串方式的表示(例如:当前时间2001-10-3 2:34:6,返回字符串"20011003023406")'********************************************Function TheDate()  y=year(date())  m=month(date())  d=day(date())  h=Hour(time())  n=Minute(time())  s=Second(time())  If Len(m)=1 Then m="0"&m  If Len(d)=1 Then d="0"&d  If Len(h)=1 Then h="0"&h  If Len(n)=1 Then n="0"&n If Len(s)=1 Then s="0"&s  thedate=y&m&d&h&n&sEnd Function

    '********************************************'函数功能:返回字符串的长度'参数:字符串'返回值:字符串长度'********************************************Function strLen(str) dim p_len p_len=0 strlen=0 if trim(str)<>"" then  p_len=len(trim(str))  for xx=1 to p_len   if asc(mid(str,xx,1))<0 then    strlen=int(strlen) + 2   else    strlen=int(strlen) + 1   end if  next end ifEnd Function

    '********************************************'函数功能:发送邮件通知'参数:字符串'返回值:成功/失败'********************************************Function SendMail(ToAddress, Subject, Body) On Error Resume Next Set objMail = Server.CreateObject("JMail.Message") objMail.From = ADR_Email objMail.FromName = "ADR管理中心" objMail.Subject = Subject objMail.AddRecipient ToAddress objMail.Body = Body If objMail.Send("") Then  SendMail = True Else  SendMail = False End If If Err.Number<> 0 Then SendMail = False Set objMail = Nothing On Error Goto 0End Function%>**********************************************************************************************************************************************************************************************

    //校验用户姓名:只能输入1-30个以字母开头的字串function isTrueName(s){ var patrn=/^[^`~!@#$%^&*()+-=|///[/]/{/}:;/'/,.<>/? 0-9]{2,19}$/; if (!patrn.exec(s)) return false return true}

    //校验密码:只能输入6-15个字母、数字function isPasswd(s){ var patrn=/^[a-zA-Z0-9]{6,15}$/; if (!patrn.exec(s)) return false return true}

    //检验体重function isAvoirdupois(s){ var patrn=/^[1-9]{1}[0-9]{0,2}$/; var patrn2=/^[1-9]{1}$/; var intPart=s.indexOf('.'); var decPart=s.lastIndexOf('.'); if (intPart==-1 && patrn.exec(s) && eval(s)>=2 && eval(s)<=200) return true if (intPart!=decPart || intPart==0 || intPart+2!=s.length) return false if (!patrn.exec(s.substring(0,intPart)) || !patrn2.exec(s.substring(decPart+1))) return false if (eval(s)<2 || eval(s)>200) return false return true}

    //校验普通电话、传真号码:可以“+”开头,除数字外,可含有“-”function isTel(s){ var patrn=/^[+]{0,1}(/d){1,3}[ ]?([-]?((/d)|[ ]){1,12})+$/; if (!patrn.exec(s)) return false return true}

    //校验手机号码:必须以数字开头,除数字外,可含有“-”function isMobile(s){ var patrn=/^[+]{0,1}(/d){1,3}[ ]?([-]?((/d)|[ ]){1,12})+$/; if (!patrn.exec(s)) return false return true}

    //校验地区代码function isAreaCode(s){ var patrn=/^(/d){6}$/; if (!patrn.exec(s)) return false return true}

    //校验邮政编码function isPostalCode(s){ var patrn=/^[1-9]{1}(/d){5}$/; if (!patrn.exec(s)) return false return true}

    //校验搜索关键字function isSearch(s){ var patrn=/^[^`~!@#$%^&*()+=|///[/]/{/}:;/'/,.<>/? ]{1}[^`~!@$%^&()+=|///[/]/{/}:;/'/,.<>?]{0,19}$/; if (!patrn.exec(s)) return false return true}

    //校验是否为ip地址function isIP(s){ var patrn=/^[0-9.]{1,20}$/; if (!patrn.exec(s)) return false return true}

    //检验页码是否正确function isPage(s){ var patrn=/^[1-9]{1}[0-9]{0,2}$/; if (!patrn.exec(s)) return false return true}

    //表单输入值错误提示function vErr(o,s){ alert(s); if (o) o.focus(); return false;}

    //判断单选function chkRadio(o){ for (i=0;i<o.length;i++){  if (o[i].checked) return true; } return false;}**********************************************************************************************************************************************************************************************

    自己写的一个比较丑的程序,但做报表时候有用/********************************************************************时间:2003.7.31作者:周长武功能:将阿拉伯数字(小写)转化成中文(大写) 参数:Num为字符型,小数点之后保留两位,例:Arabia_to_Chinese("1234.06")说明:1.目前本转换仅支持到 拾亿(元) 位,金额单位为元,不能为万元,最小单位为分   2.不支持负数修改区

    时间:修改人:原因:

    修改区结束********************************************************************/function Arabia_to_Chinese(Num){ for(i=Num.length-1;i>=0;i--) {  Num = Num.replace(",","")//替换tomoney()中的“,”  Num = Num.replace(" ","")//替换tomoney()中的空格 } Num = Num.replace("¥","")//替换掉可能出现的¥字符 if(isNaN(Num)) { //验证输入的字符是否为数字  alert("请检查小写金额是否正确");  return; } //---字符处理完毕,开始转换,转换采用前后两部分分别转换---// part = String(Num).split("."); newchar = "";  //小数点前进行转化 for(i=part[0].length-1;i>=0;i--){ if(part[0].length > 10){ alert("位数过大,无法计算");return "";}//若数量超过拾亿单位,提示  tmpnewchar = ""  perchar = part[0].charAt(i);  switch(perchar){    case "0": tmpnewchar="零" + tmpnewchar ;break;    case "1": tmpnewchar="壹" + tmpnewchar ;break;    case "2": tmpnewchar="贰" + tmpnewchar ;break;    case "3": tmpnewchar="叁" + tmpnewchar ;break;    case "4": tmpnewchar="肆" + tmpnewchar ;break;    case "5": tmpnewchar="伍" + tmpnewchar ;break;    case "6": tmpnewchar="陆" + tmpnewchar ;break;    case "7": tmpnewchar="柒" + tmpnewchar ;break;    case "8": tmpnewchar="捌" + tmpnewchar ;break;    case "9": tmpnewchar="玖" + tmpnewchar ;break;  }  switch(part[0].length-i-1){    case 0: tmpnewchar = tmpnewchar +"元" ;break;    case 1: if(perchar!=0)tmpnewchar= tmpnewchar +"拾" ;break;    case 2: if(perchar!=0)tmpnewchar= tmpnewchar +"佰" ;break;    case 3: if(perchar!=0)tmpnewchar= tmpnewchar +"仟" ;break;    case 4: tmpnewchar= tmpnewchar +"万" ;break;    case 5: if(perchar!=0)tmpnewchar= tmpnewchar +"拾" ;break;    case 6: if(perchar!=0)tmpnewchar= tmpnewchar +"佰" ;break;    case 7: if(perchar!=0)tmpnewchar= tmpnewchar +"仟" ;break;    case 8: tmpnewchar= tmpnewchar +"亿" ;break;    case 9: tmpnewchar= tmpnewchar +"拾" ;break;  }  newchar = tmpnewchar + newchar; } //小数点之后进行转化 if(Num.indexOf(".")!=-1){ if(part[1].length > 2) {  alert("小数点之后只能保留两位,系统将自动截段");  part[1] = part[1].substr(0,2)  } for(i=0;i<part[1].length;i++){  tmpnewchar = ""  perchar = part[1].charAt(i)  switch(perchar){    case "0": tmpnewchar="零" + tmpnewchar ;break;    case "1": tmpnewchar="壹" + tmpnewchar ;break;    case "2": tmpnewchar="贰" + tmpnewchar ;break;    case "3": tmpnewchar="叁" + tmpnewchar ;break;    case "4": tmpnewchar="肆" + tmpnewchar ;break;    case "5": tmpnewchar="伍" + tmpnewchar ;break;    case "6": tmpnewchar="陆" + tmpnewchar ;break;    case "7": tmpnewchar="柒" + tmpnewchar ;break;    case "8": tmpnewchar="捌" + tmpnewchar ;break;    case "9": tmpnewchar="玖" + tmpnewchar ;break;  }  if(i==0)tmpnewchar =tmpnewchar + "角";  if(i==1)tmpnewchar = tmpnewchar + "分";  newchar = newchar + tmpnewchar; } } //替换所有无用汉字 while(newchar.search("零零") != -1)  newchar = newchar.replace("零零", "零"); newchar = newchar.replace("零亿", "亿"); newchar = newchar.replace("亿万", "亿"); newchar = newchar.replace("零万", "万"); newchar = newchar.replace("零元", "元"); newchar = newchar.replace("零角", ""); newchar = newchar.replace("零分", "");

     if (newchar.charAt(newchar.length-1) == "元" || newchar.charAt(newchar.length-1) == "角")  newchar = newchar+"整" return newchar;}

    //====================================表单类================================// 文件上传过程中判断文件类型/*<input type=file οnchange="alert(this.value.match(/^(.*)(/.)(.{1,8})$/)[3])">*/

    //表单的值不能为空function isNull(elem){  //var pattern=/^/s+|/s+$/;  if(elem.replace(/(^/s+|/s$)/g, "")==""){  return false;  }else{  return true;  }}//不能超过imax字符function imax(elem){ if(elem.length>imax){  return false; }else{  return true; }}//不能少于imix字符function imix(elem){ if(elem.length<imix){  return false; }else{  return true; }}//输入为中文判断function isChinese(elem){  var pattern=/[^/x00-/xff]/g;  if(pattern.test(elem)){     //包含中文  return false;  }else{    //不包含中文     return true;  }}

    /* *********************************************************************************************************************<html><head><script language="javascript"><!--function isChinese(elem){  var pattern=/[^/x00-/xff]/g;  if(pattern.test(elem)){     //包含中文  return false;  }else{    //不包含中文     return true;  }}

    function isReady(){  if(isChinese(str.chinese.value)==false){     alert("不能输入中文");  str.chinese.focus();  return false;  }  return true;}--></script></head><body><form name="str" onSubmit="return isReady();"><input type="text" name="chinese"><input type="submit" value="中文"></form></body></html>**************************************************************************************************************************** */

    发一个将阿拉伯数字转换成中文大写的函数:function Chinese(num)  //将阿拉伯数字翻译成中文的大写数字{    if(!/^/d*(/./d*)?$/.test(num)){alert("Number is wrong!"); return "Number is wrong!";}

        var AA = new Array("零","壹","贰","叁","肆","伍","陆","柒","捌","玖");    var BB = new Array("","拾","佰","仟","萬","億","点","");        var a = (""+ num).replace(/(^0*)/g, "").split("."), k = 0, re = "";

        for(var i=a[0].length-1; i>=0; i--)    {        switch(k)        {            case 0 : re = BB[7] + re; break;            case 4 : if(!new RegExp("0{4}//d{"+ (a[0].length-i-1) +"}$").test(a[0]))                     re = BB[4] + re; break;            case 8 : re = BB[5] + re; BB[7] = BB[5]; k = 0; break;        }        if(k%4 == 2 && a[0].charAt(i+2) != 0 && a[0].charAt(i+1) == 0) re = AA[0] + re;        if(a[0].charAt(i) != 0) re = AA[a[0].charAt(i)] + BB[k%4] + re; k++;    }

        if(a.length>1) //加上小数部分(如果有小数部分)    {        re += BB[6];        for(var i=0; i<a[1].length; i++) re += AA[a[1].charAt(i)];    }    return re;}

    //验证IP地址function isIP3(elem){  var pattern=/(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9])/.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)/.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)/.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[0-9])/;  if(pattern.test(elem)){    return true;  }else{ //alert("ip格式不正确");    return false;  } }

    //   /end IP

    //移动电话(手机)//样式:13531214732或013531214732function isMoveTel(elem){ var pattern=/^0{0,1}13[0-9]{9}$/; if(pattern.test(elem)){  return true; }else{  //elert("电话号码不正确");  return false; }}

    //固定电话(小灵通。。。。家庭电话)function isFixTel(elem){ var pattern=/(^[0-9]{3,4}/-[0-9]{3,8}$)|(^[0-9]{3,8}$)|(^/([0-9]{3,4}/)[0-9]{3,8}$)/; if(pattern.test(elem)){  return true; }else{  //alert("电话号码格式不正确");  return false; }}

    //电话号码(以上二种)function  isTel(elem){ var pattern=/(^[0-9]{3,4}/-[0-9]{3,8}$)|(^[0-9]{3,8}$)|(^/([0-9]{3,4}/)[0-9]{3,8}$)|(^0{0,1}13[0-9]{9}$)/; if(pattern.test(elem)){  return true; }else{  //elert("电话号码格式不正确");  return false; }}

    测试发现错误可以告诉我:QQ50707640  Email:noujie@sina.com 愿交天下所有喜欢程序的朋友

    【1、最基本的弹出窗口代码】 其实代码非常简单: <SCRIPT LANGUAGE="javascript"> <!-- window.open ('page.html') --> </SCRIPT> 因为这是一段javascripts代码,所以它们应该放在<SCRIPT LANGUAGE="javascript">之间。<!-- 和 -->是对一些版本低的浏览器起作用,在这些老浏览器中不会将标签中的代码作为文本显示出来。要养成这个好习惯啊。 window.open ('page.html') 用于控制弹出新的窗口page.html,如果page.html不与主窗口在同一路径下,前面应写明路径,绝对路径(http://)和相对路径(../)均可。 用单引号和双引号都可以,只是不要混用。 这一段代码可以加入HTML的任意位置,<head>和</head>之间可以,<body>间</body>也可以,越前越早执行,尤其是页面代码长,又想使页面早点弹出就尽量往前放。也可以,越前越早执行,尤其是页面代码长,又想使页面早点弹出就尽量往前放。 【2、经过设置后的弹出窗口】 下面再说一说弹出窗口的设置。只要再往上面的代码中加一点东西就可以了。我们来定制这个弹出的窗口的外观,尺寸大小,弹出的位置以适应该页面的具体情况。 <SCRIPT LANGUAGE="javascript"> <!-- window.open ('page.html', 'newwindow', 'height=100, width=400, top=0,left=0, toolbar=no, menubar=no, scrollbars=no, resizable=no,location=no,status=no') //写成一行 --> </SCRIPT> 参数解释: <SCRIPT LANGUAGE="javascript"> js脚本开始; window.open 弹出新窗口的命令; 'page.html' 弹出窗口的文件名; 'newwindow' 弹出窗口的名字(不是文件名),非必须,可用空''代替; height=100 窗口高度; width=400 窗口宽度; top=0 窗口距离屏幕上方的象素值; left=0 窗口距离屏幕左侧的象素值; toolbar=no 是否显示工具栏,yes为显示; menubar,scrollbars 表示菜单栏和滚动栏。 resizable=no 是否允许改变窗口大小,yes为允许; location=no 是否显示地址栏,yes为允许; status=no 是否显示状态栏内的信息(通常是文件已经打开),yes为允许; </SCRIPT> js脚本结束 【3、用函数控制弹出窗口】 下面是一个完整的代码: <html> <head> <script LANGUAGE="JavaScript"> <!-- function openwin() { window.open ("page.html", "newwindow", "height=100, width=400, toolbar=no,menubar=no, scrollbars=no, resizable=no, location=no, status=no") //写成一行 } //--> </script> </head> <body οnlοad="openwin()"> ...任意的页面内容... </body> </html>   这里定义了一个函数openwin(),函数内容就是打开一个窗口。在调用它之前没有任何用途。 怎么调用呢?   方法一:<body οnlοad="openwin()"> 浏览器读页面时弹出窗口;   方法二:<body οnunlοad="openwin()"> 浏览器离开页面时弹出窗口;   方法三:用一个连接调用:<a href="#" οnclick="openwin()">打开一个窗口</a> 注意:使用的“#”是虚连接。   方法四:用一个按钮调用:<input type="button" οnclick="openwin()" value="打开窗口"> 【4、同时弹出2个窗口】 对源代码稍微改动一下: <script LANGUAGE="JavaScript"> <!-- function openwin() { window.open ("page.html", "newwindow", "height=100, width=100, top=0,left=0,toolbar=no, menubar=no, scrollbars=no, resizable=no, location=no,status=no") //写成一行 window.open ("page2.html", "newwindow2", "height=100, width=100, top=100,left=100,toolbar=no, menubar=no, scrollbars=no, resizable=no, location=no,status=no") //写成一行 } //--> </script>   为避免弹出的2个窗口覆盖,用top和left控制一下弹出的位置不要相互覆盖即可。最后用上面说过的四种方法调用即可。 注意:2个窗口的name(newwindows和newwindow2)不要相同,或者干脆全部为空。OK?

    【5、主窗口打开文件1.htm,同时弹出小窗口page.html】 如下代码加入主窗口<head>区: <script language="javascript"> <!-- function openwin() { window.open("page.html","","width=200,height=200") } //--> </script> 加入<body>区: <a href="1.htm" οnclick="openwin()">open</a>即可。 【6、弹出的窗口之定时关闭控制】 下面我们再对弹出的窗口进行一些控制,效果就更好了。如果我们再将一小段代码加入弹出的页面(注意是加入到page.html的HTML中,可不是主页面中,否则...),让它10秒后自动关闭是不是更酷了? 首先,将如下代码加入page.html文件的<head>区: <script language="JavaScript"> function closeit() { setTimeout("self.close()",10000) //毫秒 } </script> 然后,再用<body οnlοad="closeit()"> 这一句话代替page.html中原有的<BODY>这一句就可以了。(这一句话千万不要忘记写啊!这一句的作用是调用关闭窗口的代码,10秒钟后就自行关闭该窗口。) 【7、在弹出窗口中加上一个关闭按钮】 <FORM> <INPUT TYPE='BUTTON' VALUE='关闭' onClick='window.close()'> </FORM> 呵呵,现在更加完美了! 【8、内包含的弹出窗口---一个页面两个窗口】 上面的例子都包含两个窗口,一个是主窗口,另一个是弹出的小窗口。通过下面的例子,你可以在一个页面内完成上面的效果。 <html> <head> <SCRIPT LANGUAGE="JavaScript"> function openwin() { OpenWindow=window.open("", "newwin", "height=250, width=250,toolbar=no,scrollbars="+scroll+",menubar=no");//写成一行 OpenWindow.document.write("<TITLE>例子</TITLE>") OpenWindow.document.write("<BODY BGCOLOR=#ffffff>") OpenWindow.document.write("<h1>Hello!</h1>") OpenWindow.document.write("New window opened!") OpenWindow.document.write("</BODY>") OpenWindow.document.write("</HTML>") OpenWindow.document.close() } </SCRIPT> </head> <body> <a href="#" οnclick="openwin()">打开一个窗口</a> <input type="button" οnclick="openwin()" value="打开窗口"> </body> </html> 看看OpenWindow.document.write()里面的代码不就是标准的HTML吗?只要按照格式写更多的行即可。千万注意多一个标签或少一个标签就会出现错误。记得用OpenWindow.document.close()结束啊。 【9、终极应用--弹出的窗口之Cookie控制】 回想一下,上面的弹出窗口虽然酷,但是有一点小毛病(沉浸在喜悦之中,一定没有发现吧?)比如你将上面的脚本放在一个需要频繁经过的页面里(例如首页),那么每次刷新这个页面,窗口都会弹出一次,是不是非常烦人?:-( 有解决的办法吗?当然有!我们使用cookie来控制一下就可以了。首先,将如下代码加入主页面HTML的<HEAD>区:<script> function openwin(){ window.open("page.html","","width=200,height=200") } function get_cookie(Name) { var search = Name + "=" var returnvalue = ""; if (document.cookie.length > 0) { offset = document.cookie.indexOf(search) if (offset != -1) { offset += search.length end = document.cookie.indexOf(";", offset); if (end == -1) end = document.cookie.length; returnvalue=unescape(document.cookie.substring(offset, end)) } } return returnvalue; }function loadpopup(){ if (get_cookie('popped')==''){ openwin() document.cookie="popped=yes" } } </script>   然后,用<body οnlοad="loadpopup()">(注意不是openwin而是loadpop啊!)替换主页面中原有的<BODY>这一句即可。你可以试着刷新一下这个页面或重新进入该页面,窗口再也不会弹出了。真正的Pop-Only-Once!


    最新回复(0)