兩條防線,一個函數:
試問你如何能保證客戶端和服務器端具有相同的功能?表單域的驗證閃現在我們眼前。別人把你的html復制到另外一個腳本,然後改變客戶端的表單域驗證--這並不是一件難事。擺在眼前的解決方法是將表單域的驗證放置在服務器端。但那又意味著因為使用者的一個小錯誤,都要給服務器端要返回一串的錯誤信息。那麼,我們何不同時擁有二者呢?不僅僅如此,我們還可以在客戶端和服務器端使用同一個javascript函數來保證二者的完全一致性。
看看下面這一小段,請特別注意一下checkMyZip()函數。
復制代碼 代碼如下:
<%@LANGUAGE="JavaScript"%>
<%
//No ASP Here, just a regular HTML Page
%>
<HTML>
<SCRIPT LANGUAGE="JavaScript">
<!--Hide
function checkMyZip(zipCode)
{
var myRegularExpression=/(^\d{5}$)|(^\d{5}-\d{4}$)/
if (myRegularExpression.test(zipCode) == true)
{
return nothingIsWrong();
}
else
{
return somethingIsWrong();
}
}
function nothingIsWrong()
{
//Do nothing
return true
}
function somethingIsWrong()
{
alert("Something is wrong with the zip code you provided.")
document.zipCodeForm.zipCodeText.focus()
return false;
}
//Stop Hiding-->
</SCRIPT>
<STRONG>Type a valid U.S. Postal zip code into the box, and submit it.</STRONG>
<FORM NAME="zipCodeForm" ACTION="script05a.asp" METHOD="Post"
onSubmit="return checkMyZip(document.zipCodeForm.zipCodeText.value)">
<INPUT TYPE="Text" NAME="zipCodeText"><BR>
<BR>
<INPUT TYPE="Submit" VALUE="Submit">
</FORM>
</HTML>
我們在本課中看到的就是作為你用javascript來編寫asp腳本的一個最大的回報。看看下邊的腳本,然後再次注意checkMyZip()函數。
復制代碼 代碼如下:
<%@LANGUAGE="JavaScript"%>
<%
function checkMyZip(zipCode)
{
var myRegularExpression=/(^\d{5}$)|(^\d{5}-\d{4}$)/
if (myRegularExpression.test(zipCode) == true)
{
return nothingIsWrong();
}
else
{
return somethingIsWrong();
}
}
function nothingIsWrong()
{
//Do nothing
return true
}
function somethingIsWrong()
{
return false;
}
var zipCode=new String(Request.Form("zipCodeText"))
if (checkMyZip(zipCode)==true)
{
Response.Write("<HTML>\r")
Response.Write("The zip code you provided... ")
Response.Write("<FONT COLOR=\"RED\">")
Response.Write(zipCode + "</FONT> is good.\r")
Response.Write("</HTML>\r")
}
else
{
Response.Write("<HTML>\r")
Response.Write("The zip code you provided... ")
Response.Write("<FONT COLOR=\"RED\">")
Response.Write(zipCode + "</FONT> has a problem.\r")
Response.Write("</HTML>\r")
}
%>
這並不是最完美的列子,但是它包含了我們所要講授的要點。客戶端和服務器端嚴正數據的函數是完全一樣的。支持函數是一樣的餓,但是變化確是明顯的。僅僅是個玩笑,讓我們來看看下面的腳本。它並沒有客戶端驗證。
復制代碼 代碼如下:
<%@LANGUAGE="JavaScript"%>
<%
//No ASP Here, just a regular HTML Page
%>
<HTML>
<STRONG>Type a zip code (with no client side validation)
into the box submit it.</STRONG>
<FORM NAME="zipCodeForm" ACTION="script05a.asp" METHOD="Post">
<INPUT TYPE="Text" NAME="zipCodeText"><BR>
<BR>
<INPUT TYPE="Submit" VALUE="Submit">
</FORM>
</HTML>
第一部分小節:
這是本課程計劃第一部分的小節。有過用vbscript編寫asp的朋友並不需要在本站上有更進一步的研究。他們現在可以使用他們客戶端腳本的使用技巧去將任何的函數(子程序),任何的頁面,或者是任何的應用程序轉換為javascript。
其他的朋友則需要留下來繼續我們在第二部分的旅程。
本節原文及范例地址:http://aspjavascript.com/lesson05.asp
原文作者:James Clark 翻譯:huahua 轉載請注明