晚饭后,有人在发疑问为啥编写的Struts里面的表单验证代码死活不会执行。原始代码如下:

<%@page contentType="text/html;charset=gb2312"%>
<%@taglib uri="/WEB-INF/struts-html.tld" prefix="html"%>
<html:html>
<head>
<title>welcome next</title>
</head>
<body>
<center>
注销页面
<html:form action="/delete" enctype="multipart/form-data" onsubmit="return delete(this);">
用户名:<html:text property="username"/><br>  龄:<html:text property="age" value=""/><br>  址:<html:text property="address"/>
<br>
<html:submit value="注销"/>
<html:form>
</center>
<script language="javascript">
   1:  
   2: function delete(form){
   3: if(form.username.value==""||form.age.value==""||form.address.value==""){
   4: alert("请输入所有的信息!!!");
   5: return false;
   6: }
   7: else{
   8: alert("注销成功!!!");
   9: return true;
  10: }
  11: }

</script>
</body>
</html:html> </div>

运行症状就是不管怎么搞,都不会执行验证方法!对应的HTML代码如下:



</p>

welcome next

</head>

</p>

</p>

注销页面

</p>

用户名:

年  龄:

地  址:


</form>

</center>

</body>

</html>

</blockquote>
把这个页面存成HTML代码,不论在IE还是Firefox中,都不会执行!但是又不报任何错误!难道我们写错了嘛?那当然,这个错误真是特别特别的隐蔽,因为:delete是个JavaScript的关键字!

JScript

语言参考


delete 运算符

从对象中删除一个属性,或从数组中删除一个元素。

<b>delete</b> expression

expression 参数是一个有效的 JScript 表达式,通常是一个属性名或数组元素。

说明

如果 expression 的结果是一个对象,且在 expression 中指定的属性存在,而该对象又不允许它被删除,则返回 false

在所有其他情况下,返回 true

 

所以,把delete这个方法名随便改成其它有效的就行了!

转载请注明:WebLogic Android 博客 » 触犯天条的离奇表单验证代码[整理]