表單的驗證是開發WEB應用程式中常遇到的一關。有時候我們必須保證表單的某些項必須填寫、必須為數字、必須是指定的位元等等,這時候就要用到表單驗證了,一般我們常用的表單驗證有2種方式:
1、編寫JavaScript或VBScript的表單驗證函式,在用戶端進行驗證;
2、在表單提交後,使用ASP的方法Request.Form擷取表單的輸入值進行判斷,然後返回結果,這是在服務端進行驗證;
這2種方式都有其優缺點,比如第1種方式速度比較快,而且通常使用警告框的方式,使用者能夠很快的根據提示完成表單的填寫,但是缺點就是使用者的瀏覽器必須是支援JavaScript指令碼的,再不然如果他關閉了JavaScript,那就!@#$%&^*(小田已經倒在地上了^_^);而第2種方式的相容性比較好,但是缺點是速度比較慢(提交到服務端,在返回)而且使用也不方便。這次主要是用JavaScript的方法來驗證,當然,如果同時用2種方式來驗證是最保險了,不過(汗…………)要累死我們這些程式員了:)
上面解釋了表單驗證的2中方式,下面就具體來講講動態產生JavaScript的概念。為什麼要動態產生呢?因為這種用戶端的驗證代碼是很煩瑣的,如果每次都要自己編寫真是累啊!用慣DW(Dreamweaver)或UD的朋友可能通常使用表單驗證的外掛程式,使用後產生的程式碼也沒有藝術感,而且很多是用不到的(代碼冗餘)。小田要講的是,產生完全符合表單情況的代碼。
聲明:小田對JavaScript並不精通,這裡只是想談談動態產生的方法,JS的高手完全可以自己改。
那麼我們開始嘍。
1、我們先來看看一段簡單的JavaScript的驗證代碼:
<script language=javascript>
<!--
//Power by xiaotian 2002
function checkSubmit()
{
if ((document.form1.name.value)==)
{
window.alert (姓名必須填寫);
document.form1.name.select();
document.form1.name.focus();
return false;
}
else
return true;
}
//-->
</script>
<form name="form1" onsubmit="javascript:return checkSubmit()">
<input type="text" name="name">
</form>
這段代碼是驗證表單form1的name表單項,必須填寫內容。這裡就有幾個關鍵的部分:表單網域名稱稱、表單項名稱、判斷語句;這些就是我們下面編寫ASP函數的關鍵了。
2、如何產生JavaScript代碼。最簡單的,就是用Response.Write輸出了,比如把上面代碼輸出就可以是:
<%
Response.Write "<script language=javascript>"&vbCrlf&_
"<!--"&vbCrlf&_
"//Power by xiaotian 2002"&vbCrlf&_
"function checkSubmit()"&vbCrlf&_
"{"&vbCrlf&_
"if ((document.form1.name.value)==)"&vbCrlf&_
"{"&vbCrlf&_
"window.alert (姓名必須填寫);"&vbCrlf&_
"document.form1.name.select();"&vbCrlf&_
"document.form1.name.focus();"&vbCrlf&_
"return false;"&vbCrlf&_
"else"&vbCrlf&_
"return true;"&vbCrlf&_
"}"&vbCrlf&_
"//-->"&vbCrlf&_
"</script>"&vbCrlf&_
%>
這裡的vbCrlf是一個斷行符號換行,&是串連符,&_是代碼換行串連的字元。
3、這段代碼的頭和尾是基本固定不變的,變化的是中間的if判斷部分,我們可以先把這部分寫成函數,小田已經寫好一個了,大家可以參考一下,下面是代碼:
Function findJS(frmName,errStr)
Dim tmpArr
Dim i
參數值
i=0
擷取錯誤清單,建立數組
tmpArr=Split(errStr,"|")
輸出查詢條件
Select Case tmpArr(i+1)
Case "0" 必填的Text類型
findJS="if ((document."&frmName&"."&tmpArr(i)&".value)=="""")"&vbCrlf&_