两条防线,一个函数: 试问你如何能保证客户端和服务器端具有相同的功能?表单域的验证闪现在我们眼前。别人把你的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>
") Response.Write("The zip code you provided... ") Response.Write("<FONT COLOR="RED">") Response.Write(zipCode + "</FONT> is good.
") Response.Write("</HTML>
") } else { Response.Write("<HTML>
") Response.Write("The zip code you provided... ") Response.Write("<FONT COLOR="RED">") Response.Write(zipCode + "</FONT> has a problem.
") Response.Write("</HTML>
") }
%>
这并不是最完美的列子,但是它包含了我们所要讲授的要点。客户端和服务器端严正数据的函数是完全一样的。支持函数是一样的饿,但是变化确是明显的。仅仅是个玩笑,让我们来看看下面的脚本。它并没有客户端验证。 复制代码 代码如下: <%@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>