麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 開發(fā) > JS > 正文

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

2024-09-06 12:45:30
字體:
供稿:網(wǎng)友
不過奇怪的是,最近用下來感覺有些古怪,因為好像有些死板,已有功能的應(yīng)變能力還不強(qiáng),甚至還有個奇怪的Bug。任何項目有Bug其實也正常,但這個Bug其實是一個文檔上已經(jīng)記載了,卻沒有實現(xiàn)的功能,這就有些說不過去了。這個問題便出在remote驗證方式上,還好修改起來非常容易,在此記錄一下,也方便以后的參考。
在表單驗證時,有時候會需要發(fā)一個AJAX請求去服務(wù)器上進(jìn)行判斷,例如在用戶注冊時檢查用戶名是否存在。jQuery Validation插件提供了一種remote方式來實現(xià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便會請求“/account/verify?userName=jeffz”這樣的URL來獲取true/false。可惜的是,我們在使用ASP.NET MVC時,往往會將input的name寫為特定的形式,目的是利用DefaultModelBinder的強(qiáng)大綁定功能。例如:
<form id="regForm">
<input type="text" id="userName" name="user.Name" />
</form>
與此同時,我們用來進(jìn)行驗證的Action方法,它的參數(shù)名可能也有所不同:
代碼如下:
public ActionResult Verify(string name) { ... }

根據(jù)文檔描述,此時我們應(yīng)該這樣寫:
代碼如下:
$('#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源碼,看后差點暈過去:
代碼如下:
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ù)名的作用。那么,改吧:
代碼如下:
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 = {};
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 全黄性性激高免费视频 | 香蕉久久久精品 | 在线成人免费视频 | 毛片免费视频播放 | a黄色片 | 热99精品视频 | 久久久久久久久国产精品 | 国产精品午夜未成人免费观看 | 一区二区久久久久草草 | 在线 日本 制服 中文 欧美 | 久久精品国产久精国产 | 国产午夜电影在线观看 | 手机视频在线播放 | 国产一级在线观看视频 | 精品一区在线视频 | 久久毛片| 久久精品欧美电影 | 色综合欧美 | 牛牛热这里只有精品 | 中文字幕国产欧美 | 91丝袜| 黄色网址在线免费 | 精品一区二区久久久久久久网精 | 成人mm视频在线观看 | 国产精品午夜未成人免费观看 | 中文字幕在线观看网址 | 久久精品网站视频 | 免费在线看a | 亚洲国产色婷婷 | 亚洲国产一区二区三区 | 国产精品久久久久久久久久久久久久久 | 日韩精品中文字幕一区二区 | 欧美1—12sexvideos | 看片一区二区三区 | www.com超碰 | 久草成人在线观看 | 欧美激情第一区 | 欧美日韩在线影院 | 国产精品视频一区二区三区四 | 亚洲小视频在线 | 最新av免费网址 |