兩條防線,一個函數:
試問你如何能保證客戶端和服務器端具有相同的功能?表單域的驗證閃現在我們眼前。別人把你的html複製到另外一個腳本,然後改變客戶端的表單域驗證--這並不是一件難事。擺在眼前的解決方法是將表單域的驗證放置在服務器端。但那又意味著因為使用者的一個小錯誤,都要給服務器端要返回一串的錯誤信息。那麼,我們何不同時擁有二者呢?不僅僅如此,我們還可以在客戶端和服務器端使用同一個javascript函數來保證二者的完全一致性。
看看下面這一小段,請特別注意一下checkMyZip()函數。
複製代碼代碼如下:
<%@LANGUAGE="JavaScript"%>
<%
//NoASPHere,justaregularHTMLPage
%>
<HTML>
<SCRIPTLANGUAGE="JavaScript">
<!--Hide
functioncheckMyZip(zipCode)
{
varmyRegularExpression=/(^/d{5}$)|(^/d{5}-/d{4}$)/
if(myRegularExpression.test(zipCode)==true)
{
returnnothingIsWrong();
}
else
{
returnsomethingIsWrong();
}
}
functionnothingIsWrong()
{
//Donothing
returntrue
}
functionsomethingIsWrong()
{
alert("Somethingiswrongwiththezipcodeyouprovided.")
document.zipCodeForm.zipCodeText.focus()
returnfalse;
}
//StopHiding-->
</SCRIPT>
<STRONG>TypeavalidU.S.Postalzipcodeintothebox,andsubmitit.</STRONG>
<FORMNAME="zipCodeForm"ACTION="script05a.asp"METHOD="Post"
onSubmit="returncheckMyZip(document.zipCodeForm.zipCodeText.value)">
<INPUTTYPE="Text"NAME="zipCodeText"><BR>
<BR>
<INPUTTYPE="Submit"VALUE="Submit">
</FORM>
</HTML>
我們在本課中看到的就是作為你用javascript來編寫asp腳本的一個最大的回報。看看下邊的腳本,然後再次注意checkMyZip()函數。
複製代碼代碼如下:
<%@LANGUAGE="JavaScript"%>
<%
functioncheckMyZip(zipCode)
{
varmyRegularExpression=/(^/d{5}$)|(^/d{5}-/d{4}$)/