Jquery validate 和Jquery Ajax

这篇博客主要讨论了如何在前端使用Jquery validate进行表单校验,并结合Ajax实现数据提交。在使用中应注意加载顺序,validate.js应在Ajax之前执行。文中详细介绍了validate的配置,包括rules和messages的设定,以及radio和checkbox的校验方法。同时指出,将Ajax写入validate文件会导致URL乱码问题,建议分开处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

有关Jquery validate其实在w3c上有很详细的讲解,这里我只说一下我遇到的问题。

Jquery validate用于在提交表单的时候进行前端校验,当Jquery validate 和ajax仪器使用时,

首先要考虑到的问题是加载顺序

我们知道当访问一个页面的时候,其加载顺序是:域名解析-->加载html-->加载css和js-->加载图片

jquery validate是在ajax之前执行

其次:具体使用方法如下

引入包

<script type="text/javascript" src="${pageContext.request.contextPath}/jquery/jquery.js"></script>
<script type="text/javascript" src="${pageContext.request.contextPath}/jquery/jquery-1.11.1.js"></script>
<script type="text/javascript" src="${pageContext.request.contextPath}/validate/jquery.validate.js"></script>


添加validate.js文件,在该文件中写js校验


function validateForm() {

var validator = $("#myForm").validate({
onsubmit:true,// 是否在提交是验证
submitHandler:function(form) {
    ajaxSubmit();
    },
   rules: {
    userName: {
    required:true
    },
    sex: {
    required:true
    },
      checkbox: {
      required:true
      }
   },
     messages: {
    userName: {
    required:"请输入您的姓名"
    },
    sex: {
    required:"请选择您的性别"
    },
     checkbox: {
    required:"请选择您的爱好"
     }
   },
   errorPlacement: function(error, element) { //指定错误信息位置 
    if (element.is(":radio") ) { //如果是radio 
   
    error.appendTo(element.parent().next()); //将错误信息添加当前元素的父结点后面 
    } else if(element.is(":checkbox")){//或checkbox
   
    error.appendTo(element.parent().parent()); //将错误信息添加当前元素的父结点后面 
    }else{ 
    error.insertAfter(element); 
   
   
    //debug: true, //如果修改为true则表单不会提交
    //通过之后回调
 }); 
}

jsp页面

function doSubmit() {
    validateForm();
    //do something else...
}
function ajaxSubmit(){
 
var userName = $("#userName").val().trim(); 
var sex = $("input[type='radio']:checked").val();
var str="";    
 $('input[name="checkbox"]:checked').each(function(){    
str+=$(this).val()+",";   
 }); 
 var chk_value = str.substring(0,str.length-1).trim(); 
$.ajax({
url:"${pageContext.request.contextPath}/applyClub",
type:"POST",
async: false,
data:{
 "userName":userName,
 "sex":sex,
 "chk_value":chk_value},  
//data:$("#myForm").serialize(),
dataType:"json",
success:function(data){
alert(data.message);
},
error:function(data){
alert(data.message);
}
});  

}


我遇到的问题:

1.radio和chechbox的校验

我采用了两种方式

1.对于radio我写在了validate.js文件中了

2.对于checkbox,我在jsp页面使用了class方式,使用这种方式首先需要引入jquery.metadata.js包,

具体写法:

<span>
<input type="checkbox" name="checkbox" id="id1" value="篮球" calss="{required:true,messages:{required:'请选择您的爱好'}}"/> 篮球 
</span>

最后注意的问题是:

不要把ajax写在validate文件中,否则会产生url乱码问题,具体什么原因我也没搞清楚,

还请各位朋友予以解决。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值