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

jQuery Validation插件remote驗(yàn)證方式的Bug解決

不過(guò)奇怪的是,最近用下來(lái)感覺(jué)有些古怪,因?yàn)楹孟裼行┧腊澹延泄δ艿膽?yīng)變能力還不強(qiáng),甚至還有個(gè)奇怪的Bug。任何項(xiàng)目有Bug其實(shí)也正常,但這個(gè)Bug其實(shí)是一個(gè)文檔上已經(jīng)記載了,卻沒(méi)有實(shí)現(xiàn)的功能,這就有些說(shuō)不過(guò)去了。這個(gè)問(wèn)題便出在remote驗(yàn)證方式上,還好修改起來(lái)非常容易,在此記錄一下,也方便以后的參考。
在表單驗(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)證表單:
復(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便會(huì)請(qǐng)求“/account/verify?userName=jeffz”這樣的URL來(lái)獲取true/false??上У氖牵覀?cè)谑褂?a href=/itjie/ASPjishu/ target=_blank class=infotextkey>ASP.NET MVC時(shí),往往會(huì)將input的name寫(xiě)為特定的形式,目的是利用DefaultModelBinder的強(qiáng)大綁定功能。例如:
<form id="regForm">
<input type="text" id="userName" name="user.Name" />
</form>
與此同時(shí),我們用來(lái)進(jìn)行驗(yàn)證的Action方法,它的參數(shù)名可能也有所不同:
復(fù)制代碼 代碼如下:
public ActionResult Verify(string name) { ... }

根據(jù)文檔描述,此時(shí)我們應(yīng)該這樣寫(xiě):
復(fù)制代碼 代碼如下:
$('#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ò)去:
復(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) {
...

我很奇怪,不知道為什么會(huì)這樣做,這樣根本沒(méi)有起到指定參數(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) {
...

修改兩處即可,問(wèn)題就此解決。只可惜,jquery.validate.min.js類(lèi)似的文件只能自己進(jìn)行壓縮了。
居然會(huì)出現(xiàn)這樣的問(wèn)題,實(shí)在令人費(fèi)解。

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

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

主站蜘蛛池模板: 99热国产这里只有精品6 | 超碰在线视频 | 在线观看国产小视频 | 无敌在线视频观看免费 | 天天影视香色欲综合网 | 嫩草成人国产精品 | 色欲精品国产AV久久久 | 久久精品影院永久网址 | 日日操日日射 | 无套日出白浆在线播放 | a级成人免费毛片完整版 | 色哦色哦哦色天天综合 | 中文免费视频 | 最近中文字幕在线看免费完整版 | 天天影视网网色色欲 | 久久久精品日本一区二区三区 | 国产成人久久AV免费看澳门 | 芭乐视频免费资源在线观看 | 大胸女晃奶动态图 | 国产主播AV福利精品一区 | 国产毛多水多高潮高清 | 国产精品久久人妻无码网站一区无 | 国产精品久久久久影院嫩草 | 高清不卡伦理电影在线观看 | 在野外被男人躁了一夜动图 | 祺鑫WRITEAS流出来了 | 亚洲欧美综合视频 | 久久青草免费线观最新 | 99福利在线 | 99日影院在线播放 | 日本超A大片在线观看 | 少妇被阴内射XXXB少妇BB | 国产99在线视频 | 欧美人妇无码精品久久 | 成人免费观看www视频 | a三级黄色片 | 乳巨揉みま痴汉电车中文字幕动漫 | 91精品乱码一区二区三区 | 久久免费高清 | 午夜福利92看看电影80 | 国产免费看黄的私人影院 |