天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

jQuery Validation插件remote驗證方式的Bug解決

不過奇怪的是,最近用下來感覺有些古怪,因為好像有些死板,已有功能的應(yīng)變能力還不強,甚至還有個奇怪的Bug。任何項目有Bug其實也正常,但這個Bug其實是一個文檔上已經(jīng)記載了,卻沒有實現(xiàn)的功能,這就有些說不過去了。這個問題便出在remote驗證方式上,還好修改起來非常容易,在此記錄一下,也方便以后的參考。
在表單驗證時,有時候會需要發(fā)一個AJAX請求去服務(wù)器上進行判斷,例如在用戶注冊時檢查用戶名是否存在。jQuery Validation插件提供了一種remote方式來實現(xiàn)這一點。例如我可以這樣驗證表單:
復(fù)制代碼 代碼如下:
<form id="regForm">
<input type="text" name="userName" />
</form>
<script language="Javascript">
$('#regForm').validate({
'rules': {
'userName': {
'required': true,
'remote': '/account/verify'
}});
</script>

這樣,jQuery Validation便會請求“/account/verify?userName=jeffz”這樣的URL來獲取true/false。可惜的是,我們在使用ASP.NET MVC時,往往會將input的name寫為特定的形式,目的是利用DefaultModelBinder的強大綁定功能。例如:
<form id="regForm">
<input type="text" id="userName" name="user.Name" />
</form>
與此同時,我們用來進行驗證的Action方法,它的參數(shù)名可能也有所不同:
復(fù)制代碼 代碼如下:
public ActionResult Verify(string name) { ... }

根據(jù)文檔描述,此時我們應(yīng)該這樣寫:
復(fù)制代碼 代碼如下:
$('#regForm').validate({
'rules': {
'user.Name': {
'remote': {
url: '/account/verify',
data: {
name: function() { return $("#userName").val(); }
}}}}});

可是,從實際效果來看,jQuery還是在請求“/account/verify?user.Name=jeffz”,百思不得其解。確認(rèn)在三之后只得求助于jquery.validation.js源碼,看后差點暈過去:
復(fù)制代碼 代碼如下:
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) {
...

我很奇怪,不知道為什么會這樣做,這樣根本沒有起到指定參數(shù)名的作用。那么,改吧:
復(fù)制代碼 代碼如下:
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類似的文件只能自己進行壓縮了。
居然會出現(xiàn)這樣的問題,實在令人費解。

JavaScript技術(shù)jQuery Validation插件remote驗證方式的Bug解決,轉(zhuǎn)載需保留來源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請第一時間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 亚洲 欧美 日韩 国产 视频 | 男女生爽爽爽视频免费观看 | 贵妃高h荡肉呻吟np杨玉环 | 国产香蕉九九久久精品免费 | 亚洲视频在线免费看 | 国产成人精品区在线观看 | 中文字幕中文字幕永久免费 | 伊人影院久久 | 国产在线aaa片一区二区99 | 凌馨baby| 亚洲 综合 欧美在线视频 | 国产精品久久久久久日本 | 日本人作爰啪啪全过程 | 国产成人精品系列在线观看 | 成人免费视频无遮挡在线看 | 色中色入口2015 | 免费精品国偷自产在线 | 879影视动漫h免费观看 | 亚洲日本一区二区三区在线不卡 | 亚洲欧美日本中文子不卡 | 国内精品一级毛片免费看 | 国产精品高清视频在线 | chinesevideoshd性舞| 久久99r66热这里有精品 | 无码专区无码专区视频网网址 | 欧美精品成人a多人在线观看 | 99久视频只有精品2019 | 久草在线精彩免费视频 | 伊人影院久久 | 亚洲 欧美 国产 综合 在线 | 孕交videosgratis乌克兰 | 成年人在线免费观看视频网站 | 少妇厨房愉情理9伦片视频 少妇被躁爽到高潮无码久久 | 国产麻豆剧果冻传媒免费网站 | 又黄又爽又无遮挡在线观看免费 | 全黄h全肉细节文在线观看 全黄H全肉细节文短篇 | 色偷偷亚洲男人天堂 | 亚洲国产精品一区二区第一页 | 亚洲性无码av在线 | 成都电影免费中文高清 | 久久五月综合婷婷中文云霸高清 |