在开发中我们总是要对表单进行输入验证,虽然说又很多方法,但是有的方法写起来并不方便。现在本人把Jquery验证的方式的例子

写一下。


导入验证时提示给用户的样式

<link href="css/validate.css" rel="stylesheet" type="text/css">

导入Jquery的相关包

<script type="text/javascript" src="js/jquery.js"></script>
<SCRIPT language="javascript" src="js/jquery.validate.js"></SCRIPT>


这里面的验证可以自己二次开发,还可以用它里面提供的。

<script type="text/javascript">


//验证手机号码,这是自己定义的,下面有用到。
$.validator.addMethod( "mobile",    
function(value, element)    
{      

var tel =/^(13[0-9]|15[0|3|6|7|8|9]|18[8|9])\d{8}$/;
return this.optional(element) || (tel.test(value));   
}   
,"手机号码格式不对" 
);




$(document).ready(function(){

                                          /**

#memberAction这个是action的Id号,虽然没指定,

但是<s:form action="memberAction!registerMember" 这种生成的id号是memberAction

                                         */

$("#memberAction").validate({  

errorElement :"span",// 使用"div"标签标记错误, 默认:"label"
//wrapper:"li",// 使用"li"标签再把上边的errorELement包起来
errorClass :"validate-error",// 错误提示的css类名"error"
rules:{
"member.memname":{          //member.memname这些表单的名字
required: true,   //required是否必填,true为必填,false为不需填写
minlength: 2,     //minlength最小长度
maxlength:50,   //maxlength最大长度
remote:{      //remote是jquery提供的ajax验证
url:"memberAction!checkMemberName.action",  //后台处理程序,下面有列出来
type:"post",//数据发送方式
dataType:"json", //接受数据格式     
data:{           //要传递的数据,默认已传递应用此规则的表单项
"member.memname":function() {
return $("#memname").val();   //"member.memname"这个和#memname是同一个表单,只不过member.memname这是表单的名字,“#memname”这是表单的Id号
}
}
}
},
"member.mempass":{
required:true,
minlength:6,
maxlength:10
},
"arginPass":{
required:true,
equalTo:"#member\\.mempass"   //这个是确认密码用的,"#member\\.mempass"是原密码的id号,\\为转义符。
},
"member.phone":{
mobile:true   //mobile这个是用来验证手机号格式的,mobile是自己开发的规则,上面自定义的,见上。
},
"member.email":{
email:true   //email是验证邮箱格式是否正确。
}
},
messages:{   //messages是提供用户输入错误给用户的提示。
"member.memname":{
required:"请填写会员名",
minlength:"会员长度不能小于2个字符",
maxlength:"会员名长度不能大于50个字符",
remote:"本用户名已经被注册"
},
"member.mempass":{
required:"请输入密码",
minlength:"密码长度不能小于6个字符",
maxlength:"密码长度不能大于10个字符"
},
"arginPass":{
required:"请输入确认密码",
equalTo:"请保持确认密码和原来密码相同"
},
"member.phone":{
mobile:"请输入正确的手机号"
},
"member.email":{
email:"请输入正确的邮箱地址"
}
}
});

});
</script>




<s:form action="memberAction!registerMember" method="post" namespace="/" name="commonForm">

        用户名:<s:textfield id="memname" name="member.memname" size="34"></s:textfield>
   
        
        密码:<s:password id="member.mempass" name="member.mempass" size="34"></s:password>
 

        确认密码:<s:password id="arginPass" name="arginPass"></s:password>

        
        
        手机:<s:textfield id="member.phone" name="member.phone" size="34"></s:textfield>

              邮箱:<s:textfield id="member.email" name="member.email" size="34"></s:textfield>

</s:form>


下面是用户名ajax验证的服务器端代码

以下是action的

/**
* 验证会员名是否已经注册
* @return
*/
public String checkMemberName(){
Boolean flag=true;
try{

flag=memberDao.checkMemberName(member);

}catch(Exception ex){
ex.printStackTrace();
}
inputStream = new ByteArrayInputStream(flag.toString().getBytes());
return SUCCESS;
}

 

注意inputStream 必须要在你的action里面声明一个private InputStream inputStream;省略get(),set().

下面是Dao里面的代码

public boolean checkMemberName(Member member) {
String hql = "FROM Member m where m.memname=?";
List<Member> members = (List<Member>) this.find(hql, new Object[] { member.getMemname() });
if (members.size() > 0) {
return false;
}
return true;
}

下面是sturts.xml中的配置

<action name="memberAction" class="cn.com.ivisions.action.MemberAction">
<result type="stream">
<param name="contentType">text/html</param><!-- 默认为text/plain -->
<param name="inputName">inputStream</param><!-- 默认就为inputStream -->
</result>
</action>

至此验证就正确完毕了。