jQuery Validation插件remote驗(yàn)證方式的Bug解決
在表單驗(yàn)證時(shí),有時(shí)候會(huì)需要發(fā)一個(gè)AJAX請(qǐng)求去服務(wù)器上進(jìn)行判斷,例如在用戶注冊(cè)時(shí)檢查用戶名是否存在。jQuery Validation插件提供了一種remote方式來(lái)實(shí)現(xiàn)這一點(diǎn)。例如我可以這樣驗(yàn)證表單:
<form id="regForm">
<input type="text" name="userName" />
</form>
<script language="javascript">
$('#regForm').validate({
'rules': {
'userName': {
'required': true,
'remote': '/account/verify'
}});
</script>
這樣,jQuery Validation便會(huì)請(qǐng)求“/account/verify?userName=jeffz”這樣的URL來(lái)獲取true/false??上У氖?,我們?cè)谑褂肁SP.NET MVC時(shí),往往會(huì)將input的name寫為特定的形式,目的是利用DefaultModelBinder的強(qiáng)大綁定功能。例如:
<form id="regForm">
<input type="text" id="userName" name="user.Name" />
</form>
與此同時(shí),我們用來(lái)進(jìn)行驗(yàn)證的Action方法,它的參數(shù)名可能也有所不同:
public ActionResult Verify(string name) { ... }
根據(jù)文檔描述,此時(shí)我們應(yīng)該這樣寫:
$('#regForm').validate({
'rules': {
'user.Name': {
'remote': {
url: '/account/verify',
data: {
name: function() { return $("#userName").val(); }
}}}}});
可是,從實(shí)際效果來(lái)看,jQuery還是在請(qǐng)求“/account/verify?user.Name=jeffz”,百思不得其解。確認(rèn)在三之后只得求助于jquery.validation.js源碼,看后差點(diǎn)暈過(guò)去:
remote: function(value, element, param) {
if ( this.optional(element) )
return "dependency-mismatch";
...
param = typeof param == "string" && {url:param} || param;
if ( previous.old !== value ) {
previous.old = value;
var validator = this;
this.startRequest(element);
var data = {};
data[element.name] = value; // data還是以element.name為準(zhǔn)?
$.ajax($.extend(true, {
url: param,
mode: "abort",
port: "validate" + element.name,
dataType: "json",
data: data,
success: function(response) {
...
我很奇怪,不知道為什么會(huì)這樣做,這樣根本沒有起到指定參數(shù)名的作用。那么,改吧:
remote: function(value, element, param) {
if (this.optional(element))
return "dependency-mismatch";
...
param = typeof param == "string" && {url:param} || param;
if (previous.old !== value) {
previous.old = value;
var validator = this;
this.startRequest(element);
var data = {};
data[element.name] = value;
$.ajax($.extend(true, {
// url: param,
url: param.url,
mode: "abort",
port: "validate" + element.name,
dataType: "json",
// data: data,
data: param.data || data,
success: function(response) {
...
修改兩處即可,問題就此解決。只可惜,jquery.validate.min.js類似的文件只能自己進(jìn)行壓縮了。
居然會(huì)出現(xiàn)這樣的問題,實(shí)在令人費(fèi)解。
- jquery validation驗(yàn)證身份證號(hào),護(hù)照,電話號(hào)碼,email(實(shí)例代碼)
- jQuery.Validate 使用筆記(jQuery Validation范例 )
- jQuery 表單驗(yàn)證插件formValidation實(shí)現(xiàn)個(gè)性化錯(cuò)誤提示
- jQuery驗(yàn)證插件validation使用指南
- jQuery Validation實(shí)例代碼 讓驗(yàn)證變得如此容易
- Jquery Validation插件防止重復(fù)提交表單的解決方法
- Jquery validation remote 驗(yàn)證的緩存問題解決方法
- jquery插件validation實(shí)現(xiàn)驗(yàn)證身份證號(hào)等
- 修改jQuery Validation里默認(rèn)的驗(yàn)證方法
- jquery表單驗(yàn)證插件validation使用方法詳解
相關(guān)文章
jQuery+CSS實(shí)現(xiàn)一個(gè)側(cè)滑導(dǎo)航菜單代碼
側(cè)滑菜單在網(wǎng)站設(shè)計(jì)中應(yīng)用比較廣泛,在許多網(wǎng)站上都可以看到此種類型的菜單。本文給大家介紹jQuery+CSS實(shí)現(xiàn)一個(gè)側(cè)滑導(dǎo)航菜單代碼,需要的朋友參考下吧2016-05-05
jQuery+CSS 實(shí)現(xiàn)的超Sexy下拉菜單
早前發(fā)現(xiàn)了 Soh Tanaka 分享的非常 Sexy 的 Drop Down Menu w/ jQuery & CSS,稍作修改實(shí)現(xiàn)了多級(jí)下拉,并實(shí)現(xiàn)了 ASP.NET 中通過(guò)輸出 HTML 動(dòng)態(tài)創(chuàng)建版本,有興趣的童鞋可以包裝成 Server Control。2010-01-01
jQuery中extend函數(shù)簡(jiǎn)單用法示例
這篇文章主要介紹了jQuery中extend函數(shù)簡(jiǎn)單用法,結(jié)合實(shí)例形式簡(jiǎn)單分析了jQuery使用extend函數(shù)擴(kuò)展對(duì)象屬性的相關(guān)操作技巧,需要的朋友可以參考下2017-10-10
jquery validate添加自定義驗(yàn)證規(guī)則(驗(yàn)證郵箱 郵政編碼)
這篇文章主要介紹了query validate添加自定義驗(yàn)證規(guī)則,可以驗(yàn)證郵箱、郵政編碼等,看代碼參考使用2013-12-12
jQuery滾動(dòng)插件scrollable.js用法分析
這篇文章主要介紹了jQuery滾動(dòng)插件scrollable.js用法,簡(jiǎn)單分析了scrollable.js的功能、方法及相關(guān)使用技巧,需要的朋友可以參考下2017-05-05
textarea中的手動(dòng)換行處理的jquery代碼
textarea的手動(dòng)換行會(huì)產(chǎn)生換行標(biāo)志,但這個(gè)標(biāo)志存在卻看不到,存入數(shù)據(jù)庫(kù)中后讀出來(lái)顯示在頁(yè)面上卻不會(huì)換行,如何處理呢?2011-02-02
jQuery移除元素自動(dòng)解綁事件實(shí)現(xiàn)思路及代碼
用jQuery將元素移除的基本方法常用的有三個(gè),一個(gè)是remove()方法,一個(gè)是html()方法,一個(gè)是empty()方法2014-05-05
jquery基礎(chǔ)教程之deferred對(duì)象使用方法
jquery基礎(chǔ)教程之deferred對(duì)象使用方法2014-01-01
jQuery使用serialize()表單序列化時(shí)出現(xiàn)中文亂碼問題的解決辦法
列化中文時(shí)出現(xiàn)中文亂碼問題,怎么回事呢?下面給大家介紹下jQuery使用serialize()序列化表單時(shí)出現(xiàn)中文亂碼問題的解決辦法,有需要的朋友參考下2016-07-07
jQuery插件echarts實(shí)現(xiàn)的單折線圖效果示例【附demo源碼下載】
這篇文章主要介紹了jQuery插件echarts實(shí)現(xiàn)的單折線圖效果,結(jié)合完整實(shí)例形式分析了echarts插件繪制簡(jiǎn)單折線圖的操作步驟與相關(guān)實(shí)現(xiàn)技巧,并附帶demo源碼供讀者下載參考,需要的朋友可以參考下2017-03-03

