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

//===============================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=' 确定 ' onclick='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"
    onclick="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 = Nothing
End Function

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

'********************************************
'函数功能:对SQLencode函数过滤后的字符串进行还原
'参数strPass:经过过滤后的字符串
'返回值:还原的过滤前的字符串
'********************************************
Function SQLdecode(byVal strPass)
 If Not isNull(strPass) Then
  strPass = Replace(strPass, "&lt;", "<")
  strPass = Replace(strPass, "&gt;", ">")
 strPass = Replace(strPass, "&quot;","""" )
 strPass = Replace(strPass, "'","'" )
  strPass = Replace(strPass,"<br/>",chr(13)&chr(10))
 End If
 SQLdecode = strPass
End 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=rnds
End 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=pwds
End 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&s
End 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 if
End 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 0
End 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 onchange="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或013531214732
function 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 onload="openwin()">
...任意的页面内容...
</body>
</html>
  这里定义了一个函数openwin(),函数内容就是打开一个窗口。在调用它之前没有任何用途。
怎么调用呢?
  方法一:<body onload="openwin()"> 浏览器读页面时弹出窗口;
  方法二:<body onunload="openwin()"> 浏览器离开页面时弹出窗口;
  方法三:用一个连接调用:<a href="#" onclick="openwin()">打开一个窗口</a>
注意:使用的“#”是虚连接。
  方法四:用一个按钮调用:<input type="button" onclick="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" onclick="openwin()">open</a>即可。
【6、弹出的窗口之定时关闭控制】
下面我们再对弹出的窗口进行一些控制,效果就更好了。如果我们再将一小段代码加入弹出的页面(注意是加入到page.html的HTML中,可不是主页面中,否则...),让它10秒后自动关闭是不是更酷了?
首先,将如下代码加入page.html文件的<head>区:
<script language="JavaScript">
function closeit() {
setTimeout("self.close()",10000) //毫秒
}
</script>
然后,再用<body onload="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="#" onclick="openwin()">打开一个窗口</a>
<input type="button" onclick="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 onload="loadpopup()">(注意不是openwin而是loadpop啊!)替换主页面中原有的<BODY>这一句即可。你可以试着刷新一下这个页面或重新进入该页面,窗口再也不会弹出了。真正的Pop-Only-Once!