在b/s開發中經常用到的javaScript技術

gavinlee發表於2005-07-21
在b/s開發中經常用到的javaScript技術[@more@]一、驗證類
1、數字驗證內
1.1 整數
1.2 大於0的整數 (用於傳來的ID的驗證)
1.3 負整數的驗證
1.4 整數不能大於iMax
1.5 整數不能小於iMin
2、時間類
2.1 短時間,形如 (13:04:06)
2.2 短日期,形如 (2003-12-05)
2.3 長時間,形如 (2003-12-05 13:04:06)
2.4 只有年和月。形如(2003-05,或者2003-5)
2.5 只有小時和分鐘,形如(12:03)
3、表單類
3.1 所有的表單的值都不能為空
3.2 多行文字框的值不能為空。
3.3 多行文字框的值不能超過sMaxStrleng
3.4 多行文字框的值不能少於sMixStrleng
3.5 判斷單選框是否選擇。
3.6 判斷核取方塊是否選擇.
3.7 核取方塊的全選,多選,全不選,反選
3.8 檔案上傳過程中判斷檔案型別
4、字元類
4.1 判斷字元全部由a-Z或者是A-Z的字字母組成
4.2 判斷字元由字母和數字組成。
4.3 判斷字元由字母和數字,下劃線,點號組成.且開頭的只能是下劃線和字母
4.4 字串替換函式.Replace();
5、瀏覽器類
5.1 判斷瀏覽器的型別
5.2 判斷ie的版本
5.3 判斷客戶端的解析度

6、結合類
6.1 email的判斷。
6.2 手機號碼的驗證
6.3 身份證的驗證


二、功能類

1、時間與相關控制元件類
1.1 日曆
1.2 時間控制元件
1.3 萬年曆
1.4 顯示動態顯示時鐘效果(文字,如OA中時間)
1.5 顯示動態顯示時鐘效果 (影像,像手錶)
2、表單類
2.1 自動生成表單
2.2 動態新增,修改,刪除下拉框中的元素
2.3 可以輸入內容的下拉框
2.4 多行文字框中只能輸入iMax文字。如果多輸入了,自動減少到iMax個文字(多用於簡訊傳送)

3、列印類
3.1 列印控制元件
4、事件類
4.1 遮蔽右鍵
4.2 遮蔽所有功能鍵
4.3 --&gt 和4.4 遮蔽組合鍵ctrl+N
5、網頁設計類
5.1 連續滾動的文字,圖片(注意是連續的,兩段文字和圖片中沒有空白出現)
5.2 html編輯控制元件類
5.3 顏色選取框控制元件
5.4 下拉選單
5.5 兩層或多層次的下拉選單
5.6 仿IE選單的按鈕。(效果如rongshuxa.com的導航欄目)
5.7 狀態列,title欄的動態效果(例子很多,可以研究一下)
5.8 雙擊後,網頁自動滾屏
6、樹型結構。
6.1 asp+SQL版
6.2 asp+xml+sql版
6.3 java+sql或者java+sql+xml
7、無邊框效果的製作
8、連動下拉框技術
9、文字排序



主題:RE 灌水員bity 2005-05-25 11:02:08 一、驗證類
1、數字驗證內
1.1 整數
/^(-|+)?d+$/.test(str)
1.2 大於0的整數 (用於傳來的ID的驗證)
/^d+$/.test(str)
1.3 負整數的驗證
/^-d+$/.test(str)
2、時間類
2.1 短時間,形如 (13:04:06)
function isTime(str)
{
var a = str.match(/^(d{1,2})(:)?(d{1,2})2(d{1,2})$/);
if (a == null) {alert('輸入的引數不是時間格式'); return false;}
if (a[1]>24 || a[3]>60 || a[4]>60)
{
alert("時間格式不對");
return false
}
return true;
}
2.2 短日期,形如 (2003-12-05)
function strDateTime(str)
{
var r = str.match(/^(d{1,4})(-|/)(d{1,2})2(d{1,2})$/);
if(r==null)return false;
var d= new Date(r[1], r[3]-1, r[4]);
return (d.getFullYear()==r[1]&&(d.getMonth()+1)==r[3]&&d.getDate()==r[4]);
}
2.3 長時間,形如 (2003-12-05 13:04:06)
function strDateTime(str)
{
var reg = /^(d{1,4})(-|/)(d{1,2})2(d{1,2}) (d{1,2}):(d{1,2}):(d{1,2})$/;
var r = str.match(reg);
if(r==null)return false;
var d= new Date(r[1], r[3]-1,r[4],r[5],r[6],r[7]);
return (d.getFullYear()==r[1]&&(d.getMonth()+1)==r[3]&&d.getDate()==r[4]&&d.getHours()==r[5]&&d.getMinutes()==r[6]&&d.getSeconds()==r[7]);
}
2.4 只有年和月。形如(2003-05,或者2003-5)
2.5 只有小時和分鐘,形如(12:03)
3、表單類
3.1 所有的表單的值都不能為空

3.2 多行文字框的值不能為空。
3.3 多行文字框的值不能超過sMaxStrleng


主題:RE: 2005-05-25 11:03:34 3.4 多行文字框的值不能少於sMixStrleng
3.5 判斷單選框是否選擇。
3.6 判斷核取方塊是否選擇.
3.7 核取方塊的全選,多選,全不選,反選
3.8 檔案上傳過程中判斷檔案型別
4、字元類
4.1 判斷字元全部由a-Z或者是A-Z的字字母組成

4.2 判斷字元由字母和數字組成。

4.3 判斷字元由字母和數字,下劃線,點號組成.且開頭的只能是下劃線和字母
/^([a-zA-z_]{1})([w]*)$/g.test(str)
4.4 字串替換函式.Replace();
5、瀏覽器類
5.1 判斷瀏覽器的型別
window.navigat or.appName
5.2 判斷ie的版本
window.navigat or.appVersion
5.3 判斷客戶端的解析度
window.screen.height; window.screen.width;

6、結合類
6.1 email的判斷。
function ismail(mail)
{
return(new RegExp(/^w+((-w+)|(.w+))*@[A-Za-z0-9]+((.|-)[A-Za-z0-9]+)*.[A-Za-z0-9]+$/).test(mail));
}



主題:RE: 2005-05-25 11:04:52 6.2 手機號碼的驗證
6.3 身份證的驗證
function isIdCardNo(num)
{
if (isNaN(num)) {alert("輸入的不是數字!"); return false;}
var len = num.length, re;
if (len == 15)
re = new RegExp(/^(d{6})()?(d{2})(d{2})(d{2})(d{3})$/);
else if (len == 18)
re = new RegExp(/^(d{6})()?(d{4})(d{2})(d{2})(d{3})(d)$/);
else {alert("輸入的數字位數不對!"); return false;}
var a = num.match(re);
if (a != null)
{
if (len==15)
{
var D = new Date("19"+a[3]+"/"+a[4]+"/"+a[5]);
var B = D.getYear()==a[3]&&(D.getMonth()+1)==a[4]&&D.getDate()==a[5];
}
else
{
var D = new Date(a[3]+"/"+a[4]+"/"+a[5]);
var B = D.getFullYear()==a[3]&&(D.getMonth()+1)==a[4]&&D.getDate()==a[5];
}
if (!B) {alert("輸入的身份證號 "+ a[0] +" 裡出生日期不對!"); return false;}
}
return true;
}



主題:RE: 2005-05-25 11:05:32 3.7 核取方塊的全選,多選,全不選,反選

全選














全選
















3.8 檔案上傳過程中判斷檔案型別


畫圖:
id=S
style="LEFT: 0px; WIDTH: 392px; TOP: 0px; HEIGHT: 240px"
height=240
width=392
classid="clsid:369303C2-D7AC-11D0-89D5-00A0C90833E6">




主題:RE: 2005-05-25 11:06:20 寫登錄檔:


TABLAE相關(客戶端動態增加行列)




主題:RE: 2005-05-25 11:08:30

1.身份證嚴格驗證:


主題:RE: 2005-05-25 11:08:58 2.驗證IP地址



主題:RE: 2005-05-25 11:09:30 3.加sp1後還能用的無邊框視窗!!



Chromeless Window





主題:RE: 2005-05-25 11:11:17
電話號碼的驗證

要求:
  (1)電話號碼由數字、"("、")"和"-"構成
  (2)電話號碼為3到8位
  (3)如果電話號碼中包含有區號,那麼區號為三位或四位
  (4)區號用"("、")"或"-"和其他部分隔開
  (5)行動電話號碼為11或12位,如果為12位,那麼第一位為0
  (6)11位行動電話號碼的第一位和第二位為"13"
  (7)12位行動電話號碼的第二位和第三位為"13"
  根據這幾條規則,可以與出以下正規表示式:
  (^[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}$)






具有在輸入非數字字元不回顯的效果,即對非數字字元的輸入不作反應。
function numbersonly(field,event){
var key,keychar;
if(window.event){
key = window.event.keyCode;
}
else if (event){
key = event.which;
}
else{
return true
}


主題:RE: 2005-05-25 11:11:35 keychar = String.fromCharCode(key);
if((key == null)||(key == 0)||(key == 8)||(key == 9)||(key == 13)||(key == 27)){
return true;
}
else if(("0123456789.").indexOf(keychar)>-1){
window.status = "";
return true;
}
else {
window.status = "Field excepts numbers only";
return false;
}
}

驗證ip

str=document.RegExpDemo.txtIP.value;
if(/^(d{1,3}).(d{1,3}).(d{1,3}).(d{1,3})$/.test(str)==false)
{
window.alert('錯誤的IP地址格式');
document.RegExpDemo.txtIP.select();
document.RegExpDemo.txtIP.focus();
return;
}
if(RegExp.$1<1 || RegExp.$1>254||RegExp.$2<0||RegExp.$2>254||RegExp.$3<0||RegExp.$3>254||RegExp.$4<1||RegExp.$4>254)
{
window.alert('錯誤的IP地址');
document.RegExpDemo.txtIP.select();
document.RegExpDemo.txtIP.focus();
return;
}
//剔除 如 010.020.020.03 前面 的0
var str=str.replace(/0(d)/g,"$1");
str=str.replace(/0(d)/g,"$1");
window.alert(str);


主題:RE: 2005-05-25 11:11:52 //一下是取資料的類
//Obj引數指定資料的來源(限定Table),預設第一行為欄位名稱行
//GetTableData類提供MoveNext方法,引數是表的行向上或向下移動的位數,正數向下移動,負數向上.
//GetFieldData方法獲得指定的列名的資料
//S ort_desc方法對指定的列按降序排列
//S ort_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();
f or (i=0;i< iRow;i++){
TableData=new Array();
f or (j=0;jTableStr=MyObj.rows(i).cells(j).innerText;
TableStr=TableStr.substring(LeftLen, TableStr.length-RightLen).Trim();
TableStr=TableStr.replace(/ /gi,"").replace(/rn/ig,"");
TableData[j]=TableStr;
}
}

this.TableData=TableData;
this.cols=this.TableData[0].length;
this.rows=this.TableData.length;
this.rowindex=0;
}



主題:RE: 2005-05-25 11:13:03 function movenext(Step){
if (this.rowindex>=this.rows){
return
}

if (Step=="" || typeof(Step)=="undefined") {
if (this.rowindexthis.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
{
f or (i=0;iif (this.TableData[0]==Field){
colindex=i;
break;
}
}
}
if (colindex!=-1) {
return this.TableData[this.rowindex][colindex];
}

}



function s ort_desc(){//降序
var colindex=-1;
var highindex=-1;
desc_array=new Array();
var i,j;
f or (n=0; nField=arguments[arguments.length-1-n];
f or (i=0;iif (this.TableData[0]==Field){
colindex=i;
break;
}
}
if ( colindex==-1 )
return;
else
{
desc_array[0]=this.TableData[0];
f or(i=1;idesc_array=this.TableData[1];
highindex=1;
f or(j=1;jif (desc_array[colindex]desc_array=this.TableData[j];
highindex=j;
}



主題:RE: 2005-05-25 11:13:21 }

}
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 s ort_asc(){//升序
var colindex=-1;
var highindex=-1;
var i,j;
f or (n=0; nasc_array=new Array();
Field=arguments[arguments.length-1-n];
f or (i=0;iif (this.TableData[0]==Field){
colindex=i;
break;
}
}
if ( colindex==-1 )
return;
else
{
asc_array[0]=this.TableData[0];
f or(i=1;iasc_array=this.TableData[1];
highindex=1;
f or(j=1;jif (asc_array[colindex]>this.TableData[j][colindex]){
asc_array=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;
}




主題:RE: 2005-05-25 11:14:33
function getData(Field,FieldValue){
var colindex=-1;
var i,j;

GetData=new Array();
if (typeof(Field)=="undefined" || typeof(FieldValue)=="undefined" ){
return this.TableData;
}

f or(j=0;jif (this.TableData[0][j]==Field){
colindex=j;
}
}
if (colindex!=-1){

f or(i=1;iif (this.TableData[colindex]==FieldValue){
GetData=new Array();
GetData=this.TableData;
}
}
}
return GetData;
}


主題:RE: 2005-05-25 11:14:56 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
{
f or (i=0;iif (this.TableData[0]==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;
}


主題:RE: 2005-05-25 11:15:12 function String.prototype.Trim() {return this.replace(/(^s*)|(s*$)/g,"");}
GetTableData.prototype.MoveNext = movenext;
GetTableData.prototype.GetFieldData = getfielddata;
GetTableData.prototype.S ort_asc = s ort_asc;
GetTableData.prototype.S ort_desc = s ort_desc;
GetTableData.prototype.GetData = getData;
GetTableData.prototype.Delete = DeletE;
GetTableData.prototype.UpdateField = updateField;
GetTableData.prototype.MoveFirst = movefirst;

具體的例子:

在每個文字框的onblur事件中呼叫校驗程式碼,並且每個文字框中onKeyDown事件中寫一個enter轉tab函式

//Enter鍵換為tab
function enterToTab()
{
if(event.srcElement.type != 'button' && event.srcElement.type != 'textarea'
&& event.keyCode == 13)
{
event.keyCode = 9;
}
}

有時候還需要自由編輯表格---
給大家一個自由編輯表格的小例子,寫的有點亂,呵呵:)

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


主題:RE: 2005-05-25 11:15:30



測試修改表格





主題:RE: 2005-05-25 11:16:09


onclick="editerTableCell('editer_table','no_editer')">

自由編輯表格


單擊開始編輯按鈕,然後點選各單元格編輯
2
3


4
5
6


one
two
three


four
five
six








請單擊某個單元格進行編輯!



posted on 2005-04-16 14:35 Stephen 閱讀(5) 評論(0) 編輯 收藏

FeedBack:

標題 請輸入標題
姓名 請輸入你的姓名
主頁
請輸入驗證碼
驗證碼 *

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/310974/viewspace-802690/,如需轉載,請註明出處,否則將追究法律責任。

相關文章