jQuery validate之remote

简介: 版权声明:欢迎转载,请注明沉默王二原创。 https://blog.csdn.net/qing_gee/article/details/41447891 jquery.validate.js作为前端开发的利器之一,深受广大前端工程师的喜爱,然而很多人却不善于利用remote,下面,对,就是下面,下面还有,我们来看看如何更合理的利用jQuery validate的remote。
版权声明:欢迎转载,请注明沉默王二原创。 https://blog.csdn.net/qing_gee/article/details/41447891

jquery.validate.js作为前端开发的利器之一,深受广大前端工程师的喜爱,然而很多人却不善于利用remote,下面,对,就是下面,下面还有,我们来看看如何更合理的利用jQuery validate的remote。


介绍的内容主要有两点:

  1. 传统情况下,我们习惯使用addMethod方法为某个input提供后端验证机制,而不善于使用remote。
  2. 为remote方法提供附加的动态参数,比如你要验证昵称有没有被使用,你需要传递一下用户id。

第一步:下载jquery.validate.js,并使用下面的语句将其加入到项目中

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

第二步:注意remote源码,注意注释和附加参数!

remote: function( value, element, param ) {
	if ( this.optional(element) ) {
		return "dependency-mismatch";
	}

	// 已经验证过了,会从这里面取
	var previous = this.previousValue(element);
	if (!this.settings.messages[element.name] ) {
		this.settings.messages[element.name] = {};
	}
	previous.originalMessage = this.settings.messages[element.name].remote;
	this.settings.messages[element.name].remote = previous.message;

	param = typeof param === "string" && {url:param} || param;

	if ( previous.old === value ) {
		return previous.valid;
	}

	previous.old = value;
	var validator = this;
	this.startRequest(element);
	var data = {};
	data[element.name] = value;
	
	// 设置附加参数
	if($(element).attr("params")){
		// 通过eval方法将附加参数转换为object对象
		var params = eval('(' + $(element).attr("params") + ')');
		for(var p in params){
			data[p] = params[p];
		}
	}
	
	$.ajax($.extend(true, {
		url: param,// 传递的后台url,来进行数据验证
		mode: "abort",
		type: "post",
		port: "validate" + element.name,
		dataType: "json",
		data: data,//传递的参数为对应intput标签对应name和value值
		success: function( response ) {//response为后台返回数据,错误的时候返回错误提示信息,正确的时候返回true
			validator.settings.messages[element.name].remote = previous.originalMessage;
			var valid = response === true || response === "true";//如果返回true,则会进入到if语句,错误提示消失
			if ( valid ) {
				var submitted = validator.formSubmitted;
				validator.prepareElement(element);
				validator.formSubmitted = submitted;
				validator.successList.push(element);
				delete validator.invalid[element.name];
				validator.showErrors();
			} else {
				var errors = {};
				var message = response || validator.defaultMessage( element, "remote" );//如果后台返回有错误提示信息,则不会取默认显示信息
				errors[element.name] = previous.message = $.isFunction(message) ? message(value) : message;
				validator.invalid[element.name] = true;
				validator.showErrors(errors);
			}
			previous.valid = valid;
			validator.stopRequest(element, valid);
		}
	}, param));
	return "pending";
}

第三步:页面上配置remote,请注意params属性!

<input type="text" class="required alphanumeric" remote="${ctx}/jade/checkCodeIsExist.do" name="code"/>

<input name="marketname" id="marketname" class="required" maxlength="50" params="{oldname:'${market.marketname}'}" type="text" value="${market.marketname}" remote="${ctx}/stocks_config/marketnameCheck.do" maxlength="10">


第四步:后台接收参数进行check,返回对应处理信息

注意:正常的时候返回true,检验不通过的时候返回错误提示信息

@RequestMapping(value = "checkCodeIsExist")
public void checkCodeIsExist(HttpServletRequest request, HttpServletResponse reponse) throws Exception {
<span style="white-space:pre">	</span>Jadeinfo jadeinfo = this.jadeinfoDAO.selectByCodeKey(StrUtil.getUTF8String(request.getParameter("code")));

	if (jadeinfo != null && jadeinfo.getDeleteflag() == 0) {
		out("商品代码已存在!", reponse);
	} else {
		out(true, reponse);
	}
}


第五步:one more thing!

来看看传统的addMethod方法,我觉得够麻烦的,对比一下remote,相形见绌哦!当然了,addMethod还是有其应用场景呢!

jQuery.validator.addMethod("codeCheck", function(value, element) {
	$.ajax({
		url : common.ctx + "/jade/jade.do?action=checkCode",// 请求的URL
		data : {
			code : value
		},// 传递给action的参数{dictTypeId:'PC_STATE'}
		async : false, // 改异步为同步
		dataType : 'json',
		success : function(records) {
			$("#checkcode").val(records);
		}
	});
	var result = $("#checkcode").val();
	if (result == "true") {
		return this.optional(element) || true;
	} else {
		return this.optional(element) || false;
	}

}),




总结:最后呢,就附上一张效果图吧,也没啥!


相关文章
|
10月前
|
JavaScript 前端开发
Form表单利用Jquery Validate验证以及ajax提交
Form表单利用Jquery Validate验证以及ajax提交
50 0
|
JavaScript 前端开发
将jquery validate校验框架的remote异步验证设置为同步校验
将jquery validate校验框架的remote异步验证设置为同步校验
278 0
将jquery validate校验框架的remote异步验证设置为同步校验
|
JavaScript
关于JQuery validate表单校验插件对级联下拉框的校验问题
关于JQuery validate表单校验插件对级联下拉框的校验问题
218 0
关于JQuery validate表单校验插件对级联下拉框的校验问题
|
JavaScript 数据安全/隐私保护
jQuery的DOM文档对象模型,常见的事件,遍历,validate插件,自定义事件方法
jQuery的DOM文档对象模型,常见的事件,遍历,validate插件,自定义事件方法
105 0
jQuery的DOM文档对象模型,常见的事件,遍历,validate插件,自定义事件方法
|
JavaScript 前端开发
jquery validate初上手
jquery validate初上手
97 0
jquery validate初上手
|
JavaScript 前端开发
jQuery validate之remote
jQuery validate之remote
212 0
|
JavaScript 前端开发 数据安全/隐私保护
jQuery之validate验证表单
访问jQuery validate官网下载最新插件 https://jqueryvalidation.org/ validate是用来验证表单的 以前我们都是用js手动验证 现在可以通过这个插件直接调用别人写好的方法 更加简单方便 validate.
2015 0
|
JavaScript 前端开发 数据安全/隐私保护
jQuery-easyui和validate表单验证实例
jQuery EasyUI 表单 - 表单验证插件validatebox 使用时需要向页面引入两个css文件如下: 还需要引入三个外部js库 //这是中文简体语言包 validatebox表单验证实例 1 $(function () { 2 $("#name").
1384 0