jquery.validate的一个bug
在用jquery.validate.js做输入验证中,用到了对某个字段重复性的判断,就是在某字段的验证中使用remote进行输入时用ajax不断向后台发送请求,但是奇怪的是,在你在data:{}中用name作为属性名,传到后台时,值丢了!?是的值没了,用的post方法,formdata里该属性为空,所以就无法进行验证了.解决方法就是改一下前台的属性名,可能jquery.validate这个插件的name是个关键字,不可以作为ajax的数据属性值。
---------------------------------2017-11-27-------------------------------------------------------
我上述的推测是错误的,如果误导了一些朋友深感抱歉。与同事仔细探究了一番才发现,对某个input用remote输入验证时,不需要在data属性中指定这个input的value,因为源码中已经自动获取了该input的nam与value,并在封装的ajax中作为data中的参数传到后端,所以如果仅仅只是对此字段验证的话,data中可以什么都不需要写。
下面是源码中对remote的描述:
remote: function (value, element, param)//element指input的dom元素,value是被验证的值,param是remote对象
{
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 (this.pending[element.name])
{
return "pending";
}
if (previous.old === value)
{
return previous.valid;
}//缓存设置 previous.old = value;
var validator = this;
this.startRequest(element);
var data = {};
data[element.name] = value;//这一步就是将dom元素的name和value作为data中的参数
$.ajax($.extend(true, {
url: param,
mode: "abort",
port: "validate" + element.name,
dataType: "json",
data: data,
success: function (response)
{
validator.settings.messages[element.name].remote = previous.originalMessage;
var valid = response === true;
if (valid)
{
var submitted = validator.formSubmitted;
validator.prepareElement(element);
validator.formSubmitted = submitted;
validator.successList.push(element);
validator.showErrors();
} else
{
var errors = {};
var message = response || validator.defaultMessage(element, "remote");
errors[element.name] = previous.message = $.isFunction(message) ? message(value) : message;
validator.showErrors(errors);
}
previous.valid = valid;
validator.stopRequest(element, valid);
}
}, param));//这里将默认参数与我们在remote中写的参数进行合并,相同的属性后者覆盖
return "pending";
}
jquery.validate的一个bug的更多相关文章
- jquery.validate.js 一个jQuery验证格式控件
官网地址:http://bassistance.de/jquery-plugins/jquery-plugin-validation jQuery plugin: Validation 使用说明 转载 ...
- Jquery easyui-combobox 的一个BUG
通过easyui-combobox的loadData方法,easyui-combobox可以实现一个带字符搜索的下拉框,如下图: 但是这个下拉框中的字符串如果包含一些特殊字符的时候,就会出现BUG,通 ...
- ASP.NET MVC Jquery Validate 表单验证的多种方式
在我们日常开发过程中,前端的表单验证很重要,如果这块处理不当,会出现很多bug .但是如果处理的好,不仅bug会很少,用户体验也会得到很大的提升.在开发过程中我们可以不借助 JS 库,自己去手写 JS ...
- [转]ASP.NET MVC Jquery Validate 表单验证的多种方式介绍
在我们日常开发过程中,前端的表单验证很重要,如果这块处理不当,会出现很多bug .但是如果处理的好,不仅bug会很少,用户体验也会得到很大的提升.在开发过程中我们可以不借助 JS 库,自己去手写 JS ...
- Jquery Validate 表单验证的多种方式
ASP.NET MVC Jquery Validate 表单验证的多种方式 在我们日常开发过程中,前端的表单验证很重要,如果这块处理不当,会出现很多bug .但是如果处理的好,不仅bug会很少,用户体 ...
- jquery validate 自定义验证方法
query validate有很多验证规则,但是更多的时候,需要根据特定的情况进行自定义验证规则. 这里就来聊一聊jquery validate的自定义验证. jquery validate有一个方法 ...
- jquery validate 自定义验证方法 日期验证
jquery validate有很多验证规则,但是更多的时候,需要根据特定的情况进行自定义验证规则. 这里就来聊一聊jquery validate的自定义验证. jquery validate有一个方 ...
- jquery.validate.unobtrusive
ASP.NET MVC Unobtrusive JavaScript 实现 onfocusout 验证, onfocusin 清除错误 在 ASP.NET MVC 中启用 Unobtrusive Ja ...
- 【转】jQuery.validate 用法
名称 返回类型 描述 validate(options) 返回:Validator ...
随机推荐
- UWP 带左右滚动按钮的横向ListView———仿NetFlix首页河的设计
也是之前写的控件了,模仿NetFlix的河的设计. 大体要求如下: 1. 横向的ListView 2. 左右按钮,可以左右移动河卡片,左右的滚动条不可见 3. 左右按钮仅在鼠标Hover事件中可见 大 ...
- 说一说JVM双亲委派机制与Tomcat
双亲委派模型与JVM 类加载 讲个故事: 以前,爱捣鼓的小明突然灵机一动,写出了下面的代码 package java.lang; public class String { //...复制真正Stri ...
- 基于typedef的用法详解【转】
也许新手用这个关键字不多,但它却是一个很有用的关键字,可以使代码模块化程度更好(即与其它代码的关联较少),在C++中还是实现Traits技术的基础,也是模板编程的基本语法之一. 若说变量定义是为变量命 ...
- python经典算法面试题1.5:如何找出单链表中的倒数第K个元素
本题目摘自<Python程序员面试算法宝典>,我会每天做一道这本书上的题目,并分享出来,统一放在我博客内,收集在一个分类中. [微软笔试题] 难度系数:⭐⭐⭐ 考察频率:⭐⭐⭐⭐⭐ 题目描 ...
- 如何在HTML中设置字体颜色,你知道这几种方式吗?
color设置字体颜色 在color设置字体颜色之前,我们首先了解color在CSS中有几种取值方式,一共有4种方式,若有不全还请在评论区告知谢谢,4种方式如下: 十六进制.十进制. 英文单词.十六进 ...
- 2-了解DBMS
1.DB,DBS,DBMS的区别是什么? 1.1 DB 就是数据库,数据库是存储数据的集合,可理解为多个数据表 1.2 DBS 数据库系统,包括数据库,数据库管理系统和数据库管理人员D ...
- (C#)WPF:关于INotifyPropertyChanged接口的介绍
注意:INotifyPropertyChanged接口位于System.CompenentModel名称空间中,想使用INotifyPropertyChanged接口时,头文件需添加“using Sy ...
- pat 1108 Finding Average(20 分)
1108 Finding Average(20 分) The basic task is simple: given N real numbers, you are supposed to calcu ...
- WeTest明星工具-移动端性能测试PerfDog初探
在十一月初,腾讯就官宣了一则消息,腾讯WeTest明星工具-PerfDog面向全球发布.官宣介绍如下:https://wetest.qq.com/lab/view/475.html.我在看到该新闻时, ...
- 拎壶学python3-----(5)python之格式化输出
一.格式化输入可以减少代码开发量如下是格式化输出: 上边的%是什么意思呢?%是一个占位符,s代表字符串的类型. 二.我们看下边的例子 看使用%d %i的用法. %d %i 这种格式化只能用数字来填补占 ...