easyform插件表单验证ajax方式使用

1、easyform 是一个jQuery插件,包括easyfrom,easytip,两个部分。

      easyform是表单验证插件,支持复杂的表单验证规则,并且使用简单。甚至可以做到1行js搞定全部。

2、使用:首先加载以下三个文件,其中jquery-2.1.0.min.js不得低于1.7,且放在easyform.js上面,顺序呢不能颠倒,因为

easyform依赖于jquery,所以要先加载jquery。

 <link rel="stylesheet" href="../easyform/easyform.css">
      <script src="js/jquery-2.1.0.min.js"></script>
      <script src="../easyform/easyform.js"></script>

3、在document的ready里加上。

 $("#form").easyform();

4、实例如下:

easyform包含两个类,easyform和easyinput。easyinput负责搞定单个对象的规则验证,很显然,easyform负责调用easyinput。

  <h1>表单</h1>
	<form action="/" id="reg-form" method="post">
	       用户名:<input type="text" class="inputgri" id="mid" name="username"
			 data-easyform="length:3 10;real-time;ajax:ajax_demo();"
    			 data-message="用户名必须为3-10位的英文字母或数字"
			 data-easytip="position:top;class:easy-blue;"
			 data-message-ajax="用户名已存在!"
			/>

	        密码:<input type="text" class="inputgri" name="password"
			 data-easyform="length:6 16;real-time;"
			 data-message="密码必须为6—16位"
			 data-easytip="class:easy-blue;"
			/>
		
		生日:<input type="text" name="birthday" class="inputgri" onClick="WdatePicker()"/>
		
		验证码:<img id="num" src="${pageContext.request.contextPath}/user/code" />
		<a href="javascript:;" οnclick="document.getElementById('num').src = '${pageContext.request.contextPath}/user/code?'+(new Date()).getTime()">换一张</a>
			
	       <input type="text" class="inputgri" name="number" />			
	       <input type="button" class="button" id="sub" value="Submit »" />
    </form>


对于ajax处理:如动态验证某个用户名是否已经注册:

<script type="text/javascript">
	$().ready(function(){
	    var ef = $("#reg-form").easyform();       //页面中出现一次
	});
        function ajax_demo(){

           // alert(data);
                $.ajax({
                    type:"post",
                    url:"${pageContext.request.contextPath}/user/checkedUser",
                    data:$('#reg-form').serialize(),    //serialize()方法通过序列化表单值
                    dataType:"JSON",
                    success:function(result){
                      if(result.status){
                           //console.log(result.status);
                           $("#mid").trigger("easyform-ajax", false);      //固定且必加
			}
                    }
                });
            }
   </script>


在任意input的data-easyform属性中,添加ajax:fun(a,b,c);就可以定义一个ajax验证规则。其中ajax是固定的,fun是函数名称,任意一个函数都可以,当然函数里即         使没执行ajax也无所谓。函数的参数也是完全自定义的,没有任何硬性要求。

唯一需要注意的是,ajax规则通过在input上添加easyform-ajax事件来监听验证结果,所以需要你在你的自定义函数中返回easyform-ajax事件,就像这                  样: 

       $("#uid").trigger("easyform-ajax", false);

 true/false代表验证的成功或失败。

在上面的js代码中出现result.status, 在做信息提示的时候,我们经常会将信息声明为一个类:

如Results.java

public class Results {
	private String information;  //提示信息的内容
	private boolean status;      //信息的状态true/false

	public String getInformation() {
		return information;
	}

	public void setInformation(String information) {
		this.information = information;
	}

	public boolean isStatus() {
		return status;
	}

	public void setStatus(boolean status) {
		this.status = status;
	}
}

Controller中对信息的处理:

public String register(HttpServletRequest request,String number,User user,@DateTimeFormat(pattern="yyyy-MM-dd") Date birthday)throws Exception{
	System.out.println(user+"  "+birthday);
	Results res = new Results();
	String codeImage = (String)request.getSession().getAttribute("code");
	System.out.println(codeImage);
	if(codeImage.equalsIgnoreCase(number)){
		userService.regist(user);
		res.setStatus(true);
	}else{
		res.setStatus(false);
		res.setInformation("验证码错误~~");
	}
	String jsonString = JSONObject.toJSONString(res);       //阿里的fastJson.jar
	return jsonString;
}

对于错误信息提示,也可以提供一个map集合进行存储错误信息!!!


$("form").serialize()和 new FormData($('#uploadForm')[0])都是序列化表单,实现表单的异步提交,二者区别是:$("form").serialize()仅仅可以序列化表单中的input、select等,但对于文件上传类的就不支持了,现在就可以用new FormData($('#uploadForm')[0])了,在使用new FormData($('#uploadForm')[0])时:

       ======jq文件必须为1.8以上 ======

       ======在ajax请求中,processData: false, contentType: false,必须有,否则缺少这二者,将会提交失败======






  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
jQuery formValidator表单验证插件,它是基于jQuery类库,实现了js脚本于页面html代码的分离。你可以划分多个校验组,每个组的校验都是互不影响。对一个表单对象,你只需要写一行代码就可以轻松实现无数种脚本控制。jQuery formValidator表单插件致力于改善重复编程、考虑浏览器兼容性等情况;你只关心业务逻辑,而无需关心实现过程,只需简单的配置,无需写代码就能实现表单的检验。 jQuery formValidator表单校验插件 4.1.0 升级内容: 新增以下功能: 1、新增换肤功能,包括提示层的样式、输入控件(目前只支持text、password、file、textarea)的样式。initConfig增加theme属性,表示皮肤名,theme的值可取目录theme下的文件夹名。详见电子版帮助文件里的【制作皮肤】 2、formvalidator函数增加属性leftTrim和rightTrim。是否去掉左边或右边的空格,默认值false 3、ajaxValidator的success事件,可以返回字符串,表示错误信息,将显示在提示层上。 4、为initConfig增加属性ajaxForm,用于配置整个表单ajax提交的参数,详见demo7和api帮助 $.formValidator.initConfig({theme:"Default",submitOnce:true,formID:"form1",ajaxForm:{ dataType : "html", buttons:$("#button"), url: "http://www.51gh.net/chkuser.aspx?act=ok" }}); 5、所有函数的onError和onSuccess支持字符串,也支持函数(参数为当前的值)返回字符串。 6、发布网页版代码生成器,从当前版本开始支持。 解决以下BUG: 1、修正ajaxValidator函数有一处条件书写错误的BUG。 2、修正formvalidator函数autoModify属性对password控件不起作用的BUG。 调用步骤: a、在你要校验的表单页面引入代码生成器的脚本。 b、调用函数。如果已经写了校验代码,请在校验代码注册完成后调用。 $.formValidatorTools.openTools(); 压缩包相关变更 1、所有的帮助、范例制作成了chm电子帮助文件 2、插件相关的文件放一个目录里 插件支持5种大的校验方式,分别是:inputValidator(针对input、textarea、select控件的字符长度、值范围、选择个数的控制)、compareva lidator(提供2个对象的比较,目前可以比较字符串和数值型)、ajaxValidator(通过ajax到服务器上做数据校验)、regexValidator(提供可扩展的正则表达式库) 、functionValidator (可使用外部函数来做校验,可以当做过程处理)。插件支持四种提示模式:固定提示层(FixTip)、自动构建提示层(AutoTip)、单个提示层跟随(SingleTip)、弹出提示内容(AlertTip)。插件支持换肤:默认情况下提供4套皮肤,其包括58网、网易邮箱注册两套皮肤。 本插件于其他校验控件最大的区别有6点: 1、校验功能可以扩展。    对文、英文、数字、整数、实数、Email地址格式、基于HTTP协议的网址格式、电话号码格式、手机号码格式、货币格式、邮政编码、身份证号码、QQ号码、日期等等这些控制,别的表单校验控件是代码里写死的,而formValidator是通过外部js文件来扩展的,你可以通过写正则表达式和函数来无限的扩展这些功能。 2、实现了校验代码于html代码的完全分离。    你的所有信息都无需配置在校验表单元素上,你只要在js上配置你的信息。使美工(界面)和JavaScript工程师的工作不交织在一起 3、你只需写一行代码就能完成一个表单元素的所有校验。你只需要写一行代码就能完成一下所有的控制 •支持所有类型客户端控件的校验 •支持jQuery所有的选择器语法,只要控件有唯一ID和type属性 •支持函数和正则表达式的扩展。提供扩展库formValidatorReg.js,你可以自由的添加、修改里面的内容。 •支持2种校验模式。第一种:文字提示(showword模式);第二种:弹出窗口提示(showalert模式) •支持多个校验组。如果一个页面有多个提交按钮,分别做不同得提交,提交前要做不同的校验,所以你得用到校验组的功能。 •支持4种状态的信息提示功能,可以
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值