之前已经有一篇关于jquery.validate.js验证的文章,还不太理解的可以先看看:jQuery Validate 表单验证(这篇文章只是介绍了一下如何实现前台验证,并没有涉及后台验证remote方法)。
有时候我们不仅仅对表单所录入的信息进行验证还需要将录入的值与数据库进行比较,这时我们就需要借助remote方法来实现。这篇文章就是介绍 jquery.validate.js的后台验证的remote方法,准备工作,前台页面:
| 01 | <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> | 
 
| 04 | <metahttp-equiv="Content-Type"content="text/html; charset=UTF-8"> | 
 
| 05 | <title>Insert title here</title> | 
 
| 06 | <styletype="text/css"> | 
 
| 07 | form{max-width:800px; margin:0 auto;} | 
 
| 08 | form label{display:inline-block;width:150px; text-align:right;} | 
 
| 09 | fieldset{margin-bottom:25px;} | 
 
| 11 |     border: 1px solid #77848D; | 
 
| 17 | em.error{font-weight:normal; color:red;} | 
 
| 19 | <scriptsrc="test/jquery.js"type="text/javascript"></script> | 
 
| 20 | <scriptsrc="test/jquery.validate.js"type="text/javascript"></script> | 
 
| 21 | <scriptsrc="test/jquery.validate.message_cn.js"type="text/javascript"></script> | 
 
| 25 | <formname="test"id="testform"method="get"action="get.php"> | 
 
| 27 |     <legendtitle="用户注册(User Register)">用户注册(User Login)</legend> | 
 
| 29 |         <labelfor="name">用户名:</label> | 
 
| 30 |         <inputid="name"name="name"type="text"/> | 
 
| 33 |         <labelfor="mail">邮箱:</label> | 
 
| 34 |         <inputid="mail"name="mail"type="password"/> | 
 
| 37 |         <labelfor="password">密码:</label> | 
 
| 38 |         <inputid="password"name="password"type="password"/> | 
 
| 41 |         <labelfor="repassword">重复密码:</label> | 
 
| 42 |         <inputid="repassword"name="repassword"type="password"/> | 
 
| 45 |         <labelfor="hash">邀请码:</label> | 
 
| 46 |         <inputid="hash"name="hash"type="text"/> | 
 
| 49 |         <labelfor="sel">选择:</label> | 
 
| 50 |         <selectid="sel"name="sel"> | 
 
| 51 |             <optionvalue="">请选择</option> | 
 
| 52 |             <optionvalue="1">选择1</option> | 
 
| 53 |             <optionvalue="2">选择2</option> | 
 
| 54 |             <optionvalue="3">选择3</option> | 
 
| 55 |             <optionvalue="4">选择4</option> | 
 
| 59 |         <labelfor="type">用户类型:</label> | 
 
| 60 |         <span><inputname="type"type="radio"value="1"/>类型1</span> | 
 
| 61 |         <span><inputname="type"type="radio"value="2"/>类型2</span> | 
 
| 62 |         <span><inputname="type"type="radio"value="3"/>类型3</span> | 
 
| 65 |         <labelfor="submit"> </label> | 
 
| 66 |         <inputclass="submit"type="submit"value="注册"/> | 
 
 
 
要实现的效果:

由图可知我们要准备三个远程验证的文件(这里只是做到这种效果,就不连接数据库查找数据了,如果要和数据库的数据进行匹配原理是一样的,在这里就不赘述查找数据的方法了,相信程序员们都该掌握数据库的操作才行。在这里我们直接定义一个变量来进行匹配):
1.checkhash.php
| 04 |     $hash= $_GET['hash']; | 
 
 
 
2.checksel.php
3.changeusertype.php
| 04 |     $type= $_GET['type']; | 
 
 
 
验证代码:
| 01 | <scripttype="text/javascript"> | 
 
| 03 |     $("#testform").validate({ | 
 
| 19 |                 remote: 'checkhash.php' | 
 
| 22 |                 remote: 'checksel.php' | 
 
| 26 |                     url: "changeusertype.php", | 
 
| 30 |                         'type': function(){return $('input[name="type"]:checked').val();} | 
 
| 46 |             <span></span>equalTo: '两次输入的密码不一样' | 
 
| 61 |     errorPlacement: function (error, element) { | 
 
| 62 |             error.appendTo(element.closest("p")); | 
 
| 66 |         submitHandler: function(form) { | 
 
 
 
预览效果是这样的:

这样似乎已经达到了要求,但是有一个小问题当我们输入正确的值里点击提交出现了这样的问题(邀请码和选择的验证没有问题,但是单选按钮的出现了问题):

这是为什么?查阅了一些资料,在验证时会判断之前有没有验证过,当有验证过并有previousValue值时它就会忽略再次提交的值而是取上一次验证结果显示,有很多解决方法都是说更改源码,其它可以不用,我们在提交表单之前先清空之前一次验证绑定的previousValue值,这样就解决问题了。我们在验证方法之前加一个清空previousValue值的函数:
| 3 |     if($('input[name="type"]').data("previousValue")) | 
 
| 4 |         $('input[name="type"]').data("previousValue").old = null; | 
 
 
 
在提交表单之前调用这个方法:
| 1 | <inputclass="submit"onclick="emptyValue()"type="submit"value="注册"/> | 
 
 
 
现在应该是这样的效果了(选择正确的用户类型点击提交应该可以通过验证):
这个问题是在工作时碰到的,纠结了好久是改源码呢还是不改呢,最后找到了解决方法,在闲暇的时间整理了一下,现在贴出来以作参考,如果你有更好的方法也可以告诉我哦!
												
												
								- 关于Jquery.validate.js中动态删除验证remove方法的Bug
		利用Jquery.validate.js 来做动态验证的时候,需要特定的情况下,删除添加opAmount的必须入力的Check $("#form").validate({ rule ... 
- 表单提交学习笔记(二)—使用jquery.validate.js进行表单验证
		一.官网下载地址:http://plugins.jquery.com/validate/ 二.用法 1.在页面上进行引用 <script src="~/scripts/jquery-1 ... 
- jquery.validate.js自定义表单验证
		$(document).ready(function() { //在下列位置输入页面加载的逻辑代码 $("#inputForm").validate({ rules: { seq: ... 
- jquery.validate.js的remote用法
		<script> $(function(){ $("#myform").validate( { rules: { name:{required:true,rangele ... 
- 典型的一次jQuery.validate.js 表单中的验证应用
		var validateOption = { onkeyup:false, rules:{ password:{ required:true, remote:{ url:'index.php?app= ... 
- 表单验证插件之jquery.validate.js
		提到表单验证的插件,第一个想到的就是jquery.validate.js,所以小生想在这里稍微详细地说一下这款插件的具体使用方法,便于理解,我直接附上整段demo的代码(没怎么调样式,主要是看js): ... 
- jQuery验证控件jquery.validate.js使用说明
		官网地址:http://bassistance.de/jquery-plugins/jquery-plugin-validation jQuery plugin: Validation 使用说明 转载 ... 
- jquery.validate.js表单验证
		一.用前必备官方网站:http://bassistance.de/jquery-plugins/jquery-plugin-validation/ API: http://jquery.bassist ... 
- jQuery表单验证插件——jquery.validate.js
		官网地址:http://bassistance.de/jquery-plugins/jquery-plugin-validation 一.导入js库 <script src="../j ... 
随机推荐
	
									- · HTML使用Viewport
			· HTML使用ViewportViewport可以加速页面的渲染,请使用以下代码<meta name=”viewport” content=”width=device-width, initi ... 
- js移动设备手机跳转地址代码
			if(/AppleWebKit.*mobile/i.test(navigator.userAgent) || (/MIDP|SymbianOS|NOKIA|SAMSUNG|LG|NEC|TCL|Alc ... 
- php对mongo操作问题
			最近由于业务需求,需要使用php对mongo做一些操作,关于mongodb,选择的版本是:MongoDB shell version: 2.0.6 MongoDB是一种文档导向数据库管理系统,由C++ ... 
- 获取win7时区所有信息
			打开命令行工具: tzutil /l # 或者输入到文件中tzutil /l > data.txt # -*- utf-8 -*- """获取win7所有时区信息, ... 
- C#笔记(Hex转JPG)
			由于最近需要用SD卡记录摄像头拍的图像,记录的文件格式十六进制的(例如:0xf0就是对应图像中的八个像素点)需要做一个SD卡上位机来将十六进制文件转换成JPG图像格式,方便对图像的分析. 总体的思路是 ... 
- My97DatePicker 与 某个CSS冲突 ,导致无法显示
			调试 Metronic3.7 模版  ,boostrap的时间插件不怎么好用,改用My97DatePicker, 发现某个与plugins.css中某个插件冲突,经排查发现 css 中有这一段 ifr ... 
- laravel框架——路由
			基本路由: Route::get('/', function () { return view('welcome'); }); Route::post('/', function () { retur ... 
- 初窥struts2(二)OGNL表达式
			Struts2总结 Struts2完整的处理流程: 1  客户端发送请求,交给struts2控制器(StrutsPrepareAndExecuteFilter). 2  Filter控制器进行请求过滤 ... 
- Ural 1099 Work Scheduling
			http://acm.timus.ru/problem.aspx?space=1&num=1099 题意:有n个人,很多对合作关系,每个人只能和一个人合作,求最多能选出多少人. 一般图匹配 # ... 
- SQL 2008 如何配置远程连接
			初次接触sql2008 相比05 改观还是挺大的 在配置方面 如何打开"远程连接" 成了最棘手的   到网上找了大半天资料    依然云里雾里 参考网上的众多资料 结合本人的实际经 ...