当前位置:  编程技术>WEB前端

Jquery validation remote 验证的缓存问题解决方法

    来源: 互联网  发布时间:2014-08-25

    本文导语:  最近项目中一直在用 Jquery validation 做校验,结合bootstrap 和 jquery form 感觉效果不错。但是remote验证的缓存问题让我头痛了很久,几乎就像放弃这款插件了。 举例说明: 现有学校,年级,班级实体 在同一学校下不能有相同的年...

最近项目中一直在用 Jquery validation 做校验,结合bootstrap 和 jquery form 感觉效果不错。但是remote验证的缓存问题让我头痛了很久,几乎就像放弃这款插件了。

举例说明:

现有学校,年级,班级实体

在同一学校下不能有相同的年级,在同一年级下不能有相同的班级

以同一学校下不能有相同年级为例,在验证的时候用remote方式:

JS
代码如下:

"gradeId" : {
required : true,
min : 0,
remote: {
url: "gradeManager-checkGrade.action",
type: "post",
dataType: "json",
data: {
'gradeId' : function() {
return $("#gradeId").val();
},
'schoolId' : function() {
return $("#schoolId").val();
}
}
}
}

HTML
代码如下:


学校






年级





现在有 测试学校1、测试学校2,两所学校,其中测试学校1下有 小学一年级、小学二年级两个年级

理论上,在新增年级的时候,如果学校选择测试学校1,那么选择小学一年级、小学二年级时remote验证会报错“该年级已经存在”

事实上,第一次操作时,结果也是正确的
 
但是如果此时再更改学校,比如选择测试学校2,由于缓存问题,validation插件并不会重新进行新的remote验证而会直接返回上一次验证的结果,于是就有了如下蛋疼的错误
 
这还不是最难让人接受的,更严重的问题时如果先选择了测试学校2、和小学一年级,remote验证通过,此时再选择测试学校1,remote验证依然通过,如此一来同一学校下不能有相同年级的验证就等于失败了


于是进行了各种查询解决方法

有种说法是,在remote中加入 "cache: false",但是实测并没有解决问题

尝试过在学校下拉框上绑定onchange事件清空gradeId的值,依然无法解决问题

查阅了validation的api,发现 .valid() 方法可以主动触发验证,但是由于缓存问题,remote依然没有重新验证

还查看了validation的源码,发现其中有个previousValue这个东西,如果有值就会直接return 前一次的验证结果
 
于是尝试了一下清空这个值
代码如下:

$("#schoolId").change(function(){
$("#gradeId").removeData("previousValue");
});

成功解决问题

    
 
 

您可能感兴趣的文章:

  • Jquery 禁用缓存的方法介绍
  • 快速解决jquery之get缓存问题的最简单方法介绍
  • 解析jquery中的ajax缓存问题
  • 防止jQuery ajax Load使用缓存的方法小结
  • jQuery的缓存机制浅析
  • jQuery中ajax的使用与缓存问题的解决方法
  • jQuery表单验证插件 jQuery.validity
  • jQuery Form Validate
  • jQuery表单验证插件 Validation
  • jQuery 表单验证框架 Quick Validation
  • jquery-form-validator
  • jQuery Inline Form Validation Engine
  • jQuery表单验证插件 Live Form Validation
  • jQuery表单验证插件 Form Validation
  • JQuery validate日期比较实例
  • jQuery智能表单验证 nice Validator
  • Jquery Validation插件如何防止重复提交表单
  • 轻量级校验框架 Jquery-Lweight-validate
  • jQuery.validate 实例代码
  • jQuery Validate 验证,校验规则写在控件中的具体实例
  • jquery内置验证(validate)使用方法示例(表单验证)
  • Jquery Validation插件无法在Chrome浏览器中form.submit()的解决方法
  • jquery.validate.js插件使用经验记录
  • jquery validate验证表单的例子
  • jquery validate添加自定义验证规则(验证邮箱 邮政编码)
  • jquery validate 自定义验证方法介绍 日期验证
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • MVC2 jQuery的验证时,关于客户端验证绑定复选框问题。
  • 表单验证插件 Jquery表单验证插件
  • jQuery表单验证插件 validVal
  • JQuery验证特殊字符实例
  • jQuery表单美化和验证插件 Formly
  • jQuery表单验证及初始化插件 Koo.js
  • jQuery验证码插件 Ajax Fancy Capcha
  • jQuery表单验证插件 jqValidate
  • jquery表单验证框架提供的身份证验证方法(示例代码)
  • jQuery.ajax 用户登录验证的代码
  • jquery禁止输入数字以外的字符的示例(纯数字验证码)
  • Jquery easyui表单异步验证扩展
  • JQuery表单验证插件 EasyValidator
  • jQuery 表单验证插件 Happy.js
  • jquery正则验证代码(电话号码、传真、网址)
  • Jquery 验证手机号码与Email邮箱地址的例子
  • jquery验证email邮箱格式实例分享
  • jQuery 验证文本框只能输入数字与小数点
  • 基于jquery的simpleValidate简易验证插件
  • Jquery正则表达式验证电子邮件的代码示例
  • 通过javascript库JQuery实现页面跳转功能代码
  • jQuery鼠标动画插件 jquery-ahover
  • jQuery概述,代码举例及最新版下载
  • jQuery向导插件 Jquery Wizard Plugin
  • Jquery操作html复选框checkbox:全选,全不选和反选
  • jQuery圆角插件 jQuery Corners
  • struts+spring+hibernate+jquery实现分页功能的几个基本类介绍(异步加载)
  • jQuery相册插件 jQuery.popeye
  • jQuery UI组件 jQuery UI
  • jQuery右键菜单插件 jQuery ContextMenu
  • jQuery分页插件 Pagination jQuery Plugin


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3