最近,这个项目一直在使用jQuery验证来
检查,结合自举和jQuery表单,感觉很好,但是远程验证的缓存问题让我头疼了很长时间,就像放弃
插件一样。
例子如下:
现有学校、年级、班级实体
同一所学校没有同一年级,同一年级没有同一个班。
以同一学校的同一年级为例,在验证中采用远程教学。
js
复制代码代码如下所示:
gradeid :{
要求:真实,
最小值:0,
远程:{
网址:grademanager checkgrade。动作
类型:邮政
DataType:JSON
数据:{
gradeid:
函数(){
返回$(# gradeid )瓦迩();
},
身份:函数(){
返回$(#身份)的瓦迩();
}
}
}
}
HTML
复制代码代码如下所示:
学校
<:选择身份列表=学校listkey =身份
listvalue =schoolnameheaderkey = 1 请选择学校HeaderValue =>
等级
<:选择gradeid列表=成绩listkey =gradeid
listvalue =gradenameheaderkey = 1 请选择年级HeaderValue =>
现在有测试学校1所,测试学校2所,两所学校,其中测试学校1是二年级一年级和二年级。
理论上,如果选择一所新学校,如果学校选择了1的测试学校,那么在选择小学一年级和两年级的时候,远程考试就错了。
事实上,第一次手术的结果是
正确的。
但是,如果我们在这个时候再次改变学校,例如,选择测试学校2,因为缓存问题,验证插件将不会返回到新的远程验证,并将返回到最后验证的结果直接,所以会有一个
错误,如产卵。
这不是最难接受的,更严重的问题是,如果第一选择考试,小学一年级和2所学校,由遥控器验证,然后选择考试学校1,远程验证还是不一样的,所以学校在验证中有同样等级的失败。
因此,各种
查询解决方案是
有一种说法是远程缓存是被添加到远程的,但是测量并不能解决问题。
尝试绑定onchange事件明确学校gradeid下拉框的值,仍无法解决的问题
查验证API,
发现有效的
方法。()可以触发验证积极,但由于缓存问题,远程还没有重新验证
我们还看了验证的源代码,发现有一个previousvalue,如果有价值,它会直接返回先前的
确认。
因此,尝试清除这个值的值。
复制代码代码如下所示:
$(#身份)。变化(函数(){)
$(# gradeid)。RemoveData(previousvalue );
});
成功地解决了这个问题