FROM : CSDN
JavaScript(一)
VisualSW
JavaScript在WEB编程中能起到很大的作用,将一些常用的功能写成JavaScript类库。
将下面代码保存为Common.js
类库功能:
1.Trim(str)--去除字符串两边的空格
2.XMLEncode(str)--对字符串进行XML编码
3.ShowLabel(str,str)--鼠标提示功能(显示字符,提示字符)
可以设置显示的提示的文字的字体、颜色、大小以及提示的背景颜色、边框等
4.IsEmpty(obj)--验证输入框是否为空
5.IsInt(objStr,sign,zero)--验证是否为整数,正整数,负整数,以及是否包括零
6.IsFloat(objStr,sign,zero)--验证是否为浮点数,正浮点,负浮点,以及是否包括零
7.IsEnLetter(objStr,size)--验证是否为26个字母,大写小
源代码如下:
/*
名字:Common.js
功能:通用JavaScript脚本函数库
包括:
1.Trim(str)--去除字符串两边的空格
2.XMLEncode(str)--对字符串进行XML编码
3.ShowLabel(str,str)--鼠标提示功能(显示字符,提示字符)
4.IsEmpty(obj)--验证输入框是否为空
5.IsInt(objStr,sign,zero)--验证是否为整数
6.IsFloat(objStr,sign,zero)--验证是否为浮点数
7.IsEnLetter(objStr,size)--验证是否为26个字母
作者:申旺
日期:2004/04/14
*/
/*
==================================================================
字符串操作
Trim(string):去除字符串两边的空格
==================================================================
*/
/*
==================================================================
LTrim(string):去除左边的空格
==================================================================
*/
function LTrim(str)
{
var whitespace = new String(" \t\n\r");
var s = new String(str);
if (whitespace.indexOf(s.charAt(0)) != -1)
{
var j=0, i = s.length;
while (j < i && whitespace.indexOf(s.charAt(j)) != -1)
{
j++;
}
s = s.substring(j, i);
}
return s;
}
/*
==================================================================
RTrim(string):去除右边的空格
==================================================================
*/
function RTrim(str)
{
var whitespace = new String(" \t\n\r");
var s = new String(str);
if (whitespace.indexOf(s.charAt(s.length-1)) != -1)
{
var i = s.length - 1;
while (i >= 0 && whitespace.indexOf(s.charAt(i)) != -1)
{
i--;
}
s = s.substring(0, i+1);
}
return s;
}
/*
==================================================================
Trim(string):去除前后空格
==================================================================
*/
function Trim(str)
{
return RTrim(LTrim(str));
}
/*
================================================================================
XMLEncode(string):对字符串进行XML编码
================================================================================
*/
function XMLEncode(str)
{
str=Trim(str);
str=str.replace("&","&");
str=str.replace("<","<");
str=str.replace(">",">");
str=str.replace("'","'");
str=str.replace("\"",""");
return str;
}
/*
================================================================================
验证类函数
================================================================================
*/
function IsEmpty(obj)
{
obj=document.getElementsByName(obj).item(0);
if(Trim(obj.value)=="")
{
alert("字段不能为空。");
if(obj.disabled==false && obj.readOnly==false)
{
obj.focus();
}
}
}
/*
IsInt(string,string,int or string):(测试字符串,+ or - or empty,empty or 0)
功能:判断是否为整数、正整数、负整数、正整数+0、负整数+0
*/
function IsInt(objStr,sign,zero)
{
var reg;
var bolzero;
if(Trim(objStr)=="")
{
return false;
}
else
{
objStr=objStr.toString();
}
if((sign==null)||(Trim(sign)==""))
{
sign="+-";
}
if((zero==null)||(Trim(zero)==""))
{
bolzero=false;
}
else
{
zero=zero.toString();
if(zero=="0")
{
bolzero=true;
}
else
{
alert("检查是否包含0参数,只可为(空、0)");
}
}
switch(sign)
{
case "+-":
//整数
reg=/(^-?|^\+?)\d+$/;
break;
case "+":
if(!bolzero)
{
//正整数
reg=/^\+?[0-9]*[1-9][0-9]*$/;
}
else
{
//正整数+0
//reg=/^\+?\d+$/;
reg=/^\+?[0-9]*[0-9][0-9]*$/;
}
break;
case "-":
if(!bolzero)
{
//负整数
reg=/^-[0-9]*[1-9][0-9]*$/;
}
else
{
//负整数+0
//reg=/^-\d+$/;
reg=/^-[0-9]*[0-9][0-9]*$/;
}
break;
default:
alert("检查符号参数,只可为(空、+、-)");
return false;
break;
}
var r=objStr.match(reg);
if(r==null)
{
return false;
}
else
{
return true;
}
}
/*
IsFloat(string,string,int or string):(测试字符串,+ or - or empty,empty or 0)
功能:判断是否为浮点数、正浮点数、负浮点数、正浮点数+0、负浮点数+0
*/
function IsFloat(objStr,sign,zero)
{
var reg;
var bolzero;
if(Trim(objStr)=="")
{
return false;
}
else
{
objStr=objStr.toString();
}
if((sign==null)||(Trim(sign)==""))
{
sign="+-";
}
if((zero==null)||(Trim(zero)==""))
{
bolzero=false;
}
else
{
zero=zero.toString();
if(zero=="0")
{
bolzero=true;
}
else
{
alert("检查是否包含0参数,只可为(空、0)");
}
}
switch(sign)
{
case "+-":
//浮点数
reg=/^((-?|\+?)\d+)(\.\d+)?$/;
break;
case "+":
if(!bolzero)
{
//正浮点数
reg=/^\+?(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$/;
}
else
{
//正浮点数+0
reg=/^\+?\d+(\.\d+)?$/;
}
break;
case "-":
if(!bolzero)
{
//负浮点数
reg=/^-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$/;
}
else
{
//负浮点数+0
reg=/^((-\d+(\.\d+)?)|(0+(\.0+)?))$/;
}
break;
default:
alert("检查符号参数,只可为(空、+、-)");
return false;
break;
}
var r=objStr.match(reg);
if(r==null)
{
return false;
}
else
{
return true;
}
}
JavaScript通用库(二)
VisualSW
/*
IsEnLetter(string,string):引用(trackback2)
<script language="JavaScript" type="text/JavaScript">
/*---------------------------------------------------------------------------
表格、单元格操作类
作者:龙卫国
user:lwg888
email:lwg888@163.com
时间:2004-2-17
功能:
合并单元格,拆分单元格,向上插入行,向下插入行,向左插入列,
向右插入列,删除行,删除列
设计思路:
将表格按总行与总列数进行网状分割,为每个座标网格找到对应的单元格,
这样,在操作过程中就可以随时找出每个单元格的位置及属性
适用IE5.0以上
转载请保留作者信息
-----------------------------------------------------------------------------*/
function LwgTable(){
this.tdobj;
this.trobj;
this.tblobj;
this.xy=new Array();
this.x;
this.y;
}
function tmpObj (x,y,obj) {
this.x = x;
this.y = y;
this.obj = obj;
}
LwgTable.prototype.getObj=function(){
var tdobj=document.selection.createRange().parentElement();
if (!tdobj || tdobj.tagName != "TD")return false;
var trobj=tdobj.parentElement;
if (!trobj || trobj.tagName != "TR")return false;
var tblobj=trobj.parentElement.parentElement;
if (!tblobj || tblobj.tagName != "TABLE")return false;
this.tdobj=tdobj;
this.trobj=trobj;
this.tblobj=tblobj;
return true;
}
LwgTable.prototype.setxy=function(){
for (var i=0;i<this.tblobj.rows.length;i++)
this.xy[i]=new Array();
for (var i=0;i<this.tblobj.rows.length;i++){
var tmp_row=this.tblobj.rows[i];
var tmp_y=0;
for (var n=0;n<tmp_row.cells.length;n++){
var tmp_cell=tmp_row.cells[n];
if (this.tdobj==tmp_cell){
this.x=i;
tmp_y=this.y=this.findy(i,tmp_y);
}
for (var c=0;c<tmp_cell.colSpan;c++){
for (var r=0;r<tmp_cell.rowSpan;r++){
var tmp_ir=i+r;
var tmp_y=this.findy(tmp_ir,tmp_y);
if (c==0 && r==0) var tmp_obj=new tmpObj(i,tmp_y,tmp_cell);
this.xy[tmp_ir][tmp_y]=tmp_obj;
}
}
tmp_y++;
}
}
}
LwgTable.prototype.findy=function(x,y){
if (!this.xy[x][y])return y;
else return this.findy(x,y+1);
}
LwgTable.prototype.mergeCell = function (what){
switch (what){
case "up":
var tmp_obj=this.checkToMerge(-1,0);
if (!tmp_obj)return false;
if (this.tdobj.innerHTML != " ")tmp_obj.obj.innerHTML+=this.tdobj.innerHTML;
tmp_obj.obj.rowSpan+=this.dropCell(this.trobj.rowIndex,this.tdobj.cellIndex,'r');
break;
case "down":
var tmp_obj=this.checkToMerge(this.tdobj.rowSpan,0);
if (!tmp_obj)return false;
if (tmp_obj.obj.innerHTML != " ")this.tdobj.innerHTML+=tmp_obj.obj.innerHTML;
this.tdobj.rowSpan+=this.dropCell(this.trobj.rowIndex+this.tdobj.rowSpan,tmp_obj.obj.cellIndex,'r');
break;
case "left":
var tmp_obj=this.checkToMerge(0,-1);
if (!tmp_obj)return false;
if (this.tdobj.innerHTML != " ")tmp_obj.obj.innerHTML+=this.tdobj.innerHTML;
tmp_obj.obj.colSpan+=this.dropCell(this.trobj.rowIndex,this.tdobj.cellIndex,'c');
break;
case "right":
var tmp_obj=this.checkToMerge(0,this.tdobj.colSpan);
if (!tmp_obj)return false;
if (tmp_obj.obj.innerHTML != " ")this.tdobj.innerHTML+=tmp_obj.obj.innerHTML;
this.tdobj.colSpan+=this.dropCell(this.trobj.rowIndex,this.tdobj.cellIndex+1,'c');
break;
default :
break;
}
}
LwgTable.prototype.checkToMerge = function (x,y){
if (!this.xy[this.x+x])return false;
var tmp_obj=this.xy[this.x+x][this.y+y];
if (!tmp_obj)return false;
if (x!=0){
if (tmp_obj.y!=this.y || tmp_obj.obj.colSpan!=this.tdobj.colSpan)return false;
}
else if (y != 0){
if (tmp_obj.x!=this.x || tmp_obj.obj.rowSpan!=this.tdobj.rowSpan)return false;
}
return tmp_obj;
}
LwgTable.prototype.dropCell=function (x,y,kind){
var trobj=this.tblobj.rows[x];
if (!trobj)return false;
var rowspans=trobj.cells[y].rowSpan;
var colspans=trobj.cells[y].colSpan;
trobj.deleteCell(y);
if (kind=="r")return rowspans;
else if (kind=="c")return colspans;
}
LwgTable.prototype.changeRowspan = function (x,num){
var y=0;
while (y<this.xy[x].length){
var tmp=this.xy[x][y];
if (tmp.obj.rowSpan > 1){
tmp.obj.rowSpan+=num;
}
y+=tmp.obj.colSpan;
}
}
LwgTable.prototype.insertRow = function (what,num){
var x = this.x;
var x1 = (what=='up') ? x : (x + 1);
if (x1==this.tblobj.rows.length){
for (var n=0;n<num;n++){
var newRow=this.tblobj.insertRow(x1);
var lastxy=this.xy[this.xy.length-1];
var i=0;
while (i<lastxy.length){
var newCell=newRow.insertCell();
newCell.innerHTML=" ";
newCell.mergeAttributes(lastxy[i].obj);
newCell.rowSpan=1
i+=lastxy[i].obj.colSpan;
}
}
return true;
}
for (var n=0;n<num;n++){
var trobj=this.tblobj.rows[x];
var newRow=this.tblobj.insertRow(x1);
var delcell=new Array();
for(var i=0;i<trobj.cells.length;i++){
if (trobj.cells[i].rowSpan==1){
var newCell=newRow.insertCell();
newCell.innerHTML=" ";
newCell.mergeAttributes(trobj.cells[i])
}
else if (what=='up'){
var newCell=newRow.insertCell();
trobj.cells[i].rowSpan+=1;
newCell.innerHTML=trobj.cells[i].innerHTML;
delcell[i]=1;
newCell.mergeAttributes(trobj.cells[i])
}
}
var deli=0;
for (i in delcell){
trobj.deleteCell(i-deli);
deli++;
}
}
this.changeRowspan(this.x,num);
}
LwgTable.prototype.deleteRow = function (){
if (this.trobj.rowIndex==this.tblobj.rows.length-1){
this.tblobj.deleteRow(this.trobj.rowIndex);
return true;
}
var y=0;
while (y<this.xy[this.x].length){
var tmp_obj=this.xy[this.x][y].obj;
if (tmp_obj.rowSpan > 1){
tmp_obj.rowSpan-=1;
if (tmp_obj.parentElement.rowIndex == this.x){
if (tmp_obj.cellIndex<this.trobj.cells.length-1)var cellIndex=this.xy[this.x+1][y+tmp_obj.colSpan].obj.cellIndex;
else var cellIndex=this.tblobj.rows[this.x+1].cells.length;
newCell=this.tblobj.rows[this.x+1].insertCell(cellIndex)
newCell.replaceNode(tmp_obj);
}
}
y+=tmp_obj.colSpan;
}
this.tblobj.deleteRow(this.trobj.rowIndex);
}
LwgTable.prototype.deleteCol = function (){
var x=0;
while (x<this.xy.length){
var tmp_obj=this.xy[x][this.y].obj;
x+=tmp_obj.rowSpan
if (tmp_obj.colSpan==1){
tmp_obj.parentElement.deleteCell(tmp_obj.cellIndex);
}
else tmp_obj.colSpan-=1;
}
}
LwgTable.prototype.insertCol = function (what,num){
var x=0;
while (x<this.xy.length){
var tmp_obj=this.xy[x][this.y].obj;
x+=tmp_obj.rowSpan
if (tmp_obj.colSpan==1){
var cellIndex=(what=="right")?(tmp_obj.cellIndex+1):tmp_obj.cellIndex;
for (var n=0;n<num;n++){
var newCell=tmp_obj.parentElement.insertCell(cellIndex);
newCell.innerHTML=" ";
newCell.mergeAttributes(tmp_obj)
}
}
else tmp_obj.colSpan+=num;
}
}
LwgTable.prototype.rowSplit = function (num){
if (num<2)return false;
while (num>1){
var y=0;
var tmp_x=this.x+this.tdobj.rowSpan-1;
var tmp_index=0;
while (y<this.xy[tmp_x].length){
var tmp_obj=this.xy[tmp_x][y]
if(this.tdobj.rowSpan>1){
if (tmp_obj.obj==this.tdobj){
var newCell=this.tblobj.rows[tmp_x].insertCell(tmp_index);
newCell.innerHTML=" ";
newCell.mergeAttributes(this.tdobj)
newCell.rowSpan=1
}
if (tmp_x==tmp_obj.x)tmp_index++;
}
else {
if (tmp_obj.obj==this.tdobj){
var newRow=this.tblobj.insertRow(this.x+1);
var newCell=newRow.insertCell(0);
newCell.innerHTML=" ";
}
else tmp_obj.obj.rowSpan+=1;
}
y+=tmp_obj.obj.colSpan;
}
if(this.tdobj.rowSpan>1)this.tdobj.rowSpan-=1
num-=1
}
}
LwgTable.prototype.colSplit = function (num){
var x=0;
while (x<this.xy.length){
var tmp_obj=this.xy[x][this.y].obj;
x+=tmp_obj.rowSpan
if (tmp_obj==this.tdobj){
for (var n=0;n<num;n++){
var newCell=tmp_obj.parentElement.insertCell(this.tdobj.cellIndex);
newCell.innerHTML=" ";
newCell.mergeAttributes(tmp_obj)
}
}
else tmp_obj.colSpan+=num;
}
}
function table_change(){
var t=new LwgTable();
if (!t.getObj())return false;
t.setxy();
var args=table_change.arguments;
switch (args[0]){
case "insertrow_up":
t.insertRow('up',args[1])
break
case "insertrow_down":
t.insertRow('down',args[1])
break
case "deleterow":
t.deleteRow()
break
case "deletecol":
t.deleteCol()
break
case "insertcol_left":
t.insertCol('left',args[1])
break
case "insertcol_right":
t.insertCol('right',args[1])
break
case "rowsplit":
t.rowSplit(args[1])
break
case "colsplit":
t.colSplit(args[1])
break
case "merge":
t.mergeCell(args[1]);
break
default:
break;
}
}
</script>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<table border="0" cellpadding="5" cellspacing="1" bgcolor="#999999">
<tr bgcolor="#FFFFFF">
<td align="right" bgcolor="#efefef">合并单元格</td>
<td><input type="button" name="Submit2" value="向上" onClick="table_change('merge','up')">
<input type="button" name="Submit22" value="向下" onClick="table_change('merge','down')">
<input type="button" name="Submit23" value="向左" onClick="table_change('merge','left')">
<input type="button" name="Submit24" value="向右" onClick="table_change('merge','right')"></td>
</tr>
<tr bgcolor="#FFFFFF">
<td align="right" bgcolor="#efefef">拆分单元格</td>
<td><input type="button" name="Submit2424" value="拆成3行" onClick="table_change('rowsplit',3)">
<input type="button" name="Submit24242" value="拆成2列" onClick="table_change('colsplit',2)"></td>
</tr>
<tr bgcolor="#FFFFFF">
<td align="right" bgcolor="#efefef">插入行</td>
<td><input type="button" name="Submit242" value="向上插入3行" onClick="table_change('insertrow_up',3)">
<input type="button" name="Submit2422" value="向下插入2行" onClick="table_change('insertrow_down',2)"></td>
</tr>
<tr bgcolor="#FFFFFF">
<td align="right" bgcolor="#efefef">插入列</td>
<td><input type="button" name="Submit2423" value="向左插入3列" onClick="table_change('insertcol_left',3)">
<input type="button" name="Submit24223" value="向右插入2列" onClick="table_change('insertcol_right',2)"></td>
</tr>
<tr bgcolor="#FFFFFF">
<td align="right" bgcolor="#efefef">删除行</td>
<td><input type="button" name="Submit24222" value="删除行" onClick="table_change('deleterow')"></td>
</tr>
<tr bgcolor="#FFFFFF">
<td align="right" bgcolor="#efefef">删除列</td>
<td><input type="button" name="Submit242222" value="删除列" onClick="table_change('deletecol')"></td>
</tr>
</table>
使用方式:先在单元格中建立一个选区,再点击上面按钮<br>
<table width="100%" border="1">
<tr>
<td colspan="2">1</td>
<td>2</td>
<td>3</td>
</tr>
<tr>
<td bgcolor="#CCCCCC"> </td>
<td rowspan="2">47</td>
<td>5</td>
<td>6</td>
</tr>
<tr>
<td rowspan="3">45</td>
<td>8</td>
<td bgcolor="#CCCCCC">9</td>
</tr>
<tr>
<td rowspan="3">10</td>
<td bgcolor="#FFFFCC">11</td>
<td rowspan="2">1214</td>
</tr>
<tr>
<td bgcolor="#CCCCCC">13</td>
</tr>
<tr>
<td>123</td>
<td bgcolor="#CCCCCC"> </td>
<td>6</td>
</tr>
</table>