formValidator3.3的ajaxValidator一些異常分析
更新時(shí)間:2011年07月12日 23:47:39 作者:
ajaxvalidator是大家問的最多的問題,修正一個(gè)bug(感謝網(wǎng)友“じ龍峸√”),并把大家最關(guān)心的問題,再做一次闡述。
ajaxvalidator是大家問的最多的問題,修正一個(gè)bug(感謝網(wǎng)友“じ龍峸√”),并把大家最關(guān)心的問題,再做一次闡述。
bug現(xiàn)象:無論校驗(yàn)有沒有校驗(yàn)通過,當(dāng)控件再次得到焦點(diǎn)而再次失去焦點(diǎn)的時(shí)候tip里的提示就會(huì)停滯在得到焦點(diǎn)的提示
歷次升級的相關(guān)記錄:
a、為AjaxValidator添加一個(gè)addidvalue屬性(是否自動(dòng)添加id和值到url參數(shù)后面)
為了修復(fù)AjaxValidator在配置信息的時(shí)候,取不到運(yùn)行時(shí)候值的bug,插件將自動(dòng)在url后面自動(dòng)添加,形式為"id=value"的網(wǎng)頁參數(shù)。
在服務(wù)器端,你可以通過Request.querystring["id"]來取值。 具體演示請看demo1里的用戶名輸入和Default.aspx
異常說明:
開發(fā)過程中仍會(huì)出現(xiàn)亂碼問題
例如:
$("#thename").formValidator({onfocus:"用戶名至少6個(gè)字符,最多40個(gè)字符",oncorrect:"輸入格式正確"}).inputValidator({min:6,max:40,onerror:"你輸入的用戶名非法,請確認(rèn)"})//.regexValidator({regexp:"username",datatype:"enum",onerror:"用戶名格式不正確"})
.ajaxValidator({
type : "get",
url : "login.do",
data:"action=isExist",
datatype : "xml",
success : function(data){
root = data.documentElement;
var rowSet = root.selectNodes("http://delete");
if( rowSet.item(0).selectSingleNode("value").text == "0" )
{
return true;
}
else
{
return false;
}
},
buttons: $("#saveId"),
error: function(){alert("服務(wù)器沒有返回?cái)?shù)據(jù),可能服務(wù)器忙,請重試");},
onerror : "該用戶名不可用,請更換用戶名",
onwait : "正在對用戶名進(jìn)行合法性校驗(yàn),請稍候..."http://function(){alert($("#pcode").val());}
});
說明:
data:"action=isExist&thename="+$('#thename').val(),這種方式是失效的,因?yàn)?('#thename').val()是固定不變的,而且是初始值,通常為空.
修改源碼:
formValidator.js
//ajax校驗(yàn)
ajaxValid : function(returnObj)的方法中
將
var parm = "clientid="+id+"&"+id+"="+encodeURIComponent(srcjo.val());
改為:
var parm = "clientid="+id+"&"+id+"="+encodeURIComponent(encodeURIComponent(srcjo.val()));
因?yàn)橹挥型ㄟ^前臺(tái)兩次編碼,后臺(tái)一次解碼就可以解決亂碼問題
thename=java.net.URLDecoder.decode(thename,"UTF-8");
注意前臺(tái)必須編碼兩次,否則會(huì)仍是亂碼.
bug現(xiàn)象:無論校驗(yàn)有沒有校驗(yàn)通過,當(dāng)控件再次得到焦點(diǎn)而再次失去焦點(diǎn)的時(shí)候tip里的提示就會(huì)停滯在得到焦點(diǎn)的提示
歷次升級的相關(guān)記錄:
a、為AjaxValidator添加一個(gè)addidvalue屬性(是否自動(dòng)添加id和值到url參數(shù)后面)
為了修復(fù)AjaxValidator在配置信息的時(shí)候,取不到運(yùn)行時(shí)候值的bug,插件將自動(dòng)在url后面自動(dòng)添加,形式為"id=value"的網(wǎng)頁參數(shù)。
在服務(wù)器端,你可以通過Request.querystring["id"]來取值。 具體演示請看demo1里的用戶名輸入和Default.aspx
異常說明:
開發(fā)過程中仍會(huì)出現(xiàn)亂碼問題
例如:
復(fù)制代碼 代碼如下:
$("#thename").formValidator({onfocus:"用戶名至少6個(gè)字符,最多40個(gè)字符",oncorrect:"輸入格式正確"}).inputValidator({min:6,max:40,onerror:"你輸入的用戶名非法,請確認(rèn)"})//.regexValidator({regexp:"username",datatype:"enum",onerror:"用戶名格式不正確"})
.ajaxValidator({
type : "get",
url : "login.do",
data:"action=isExist",
datatype : "xml",
success : function(data){
root = data.documentElement;
var rowSet = root.selectNodes("http://delete");
if( rowSet.item(0).selectSingleNode("value").text == "0" )
{
return true;
}
else
{
return false;
}
},
buttons: $("#saveId"),
error: function(){alert("服務(wù)器沒有返回?cái)?shù)據(jù),可能服務(wù)器忙,請重試");},
onerror : "該用戶名不可用,請更換用戶名",
onwait : "正在對用戶名進(jìn)行合法性校驗(yàn),請稍候..."http://function(){alert($("#pcode").val());}
});
說明:
data:"action=isExist&thename="+$('#thename').val(),這種方式是失效的,因?yàn)?('#thename').val()是固定不變的,而且是初始值,通常為空.
修改源碼:
formValidator.js
//ajax校驗(yàn)
ajaxValid : function(returnObj)的方法中
將
var parm = "clientid="+id+"&"+id+"="+encodeURIComponent(srcjo.val());
改為:
var parm = "clientid="+id+"&"+id+"="+encodeURIComponent(encodeURIComponent(srcjo.val()));
因?yàn)橹挥型ㄟ^前臺(tái)兩次編碼,后臺(tái)一次解碼就可以解決亂碼問題
thename=java.net.URLDecoder.decode(thename,"UTF-8");
注意前臺(tái)必須編碼兩次,否則會(huì)仍是亂碼.
相關(guān)文章
jQuery pager.js 插件動(dòng)態(tài)分頁功能實(shí)例分析
這篇文章主要介紹了jQuery pager.js 插件動(dòng)態(tài)分頁功能,結(jié)合具體實(shí)例形式分析了pager.js 插件的定義及使用插件進(jìn)行分頁操作相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下2019-08-08
使用jQuery validate 驗(yàn)證注冊表單實(shí)例演示
Validation是jQuery的插件,提供的方法可以大大簡化驗(yàn)證表單的工作,接下來為大家詳細(xì)介紹下使用方法,感興趣的各位可以參考下哈2013-03-03
jQuery插件echarts實(shí)現(xiàn)的單折線圖效果示例【附demo源碼下載】
這篇文章主要介紹了jQuery插件echarts實(shí)現(xiàn)的單折線圖效果,結(jié)合完整實(shí)例形式分析了echarts插件繪制簡單折線圖的操作步驟與相關(guān)實(shí)現(xiàn)技巧,并附帶demo源碼供讀者下載參考,需要的朋友可以參考下2017-03-03
jquery模擬實(shí)現(xiàn)鼠標(biāo)指針停止運(yùn)動(dòng)事件
這篇文章主要介紹了jquery模擬實(shí)現(xiàn)鼠標(biāo)指針停止運(yùn)動(dòng)事件示例代碼,感興趣的小伙伴們可以參考一下2016-01-01
jQuery中add實(shí)現(xiàn)同時(shí)選擇兩個(gè)id對象
jquery同時(shí)選擇兩個(gè)id對象的時(shí)候,可以用add來實(shí)現(xiàn)。2010-10-10
jquery的ajax異步請求接收返回json數(shù)據(jù)實(shí)例
jquery的ajax異步請求接收返回json數(shù)據(jù)方法設(shè)置簡單,一個(gè)是服務(wù)器處理程序是返回json數(shù)據(jù),另一種就是ajax發(fā)送設(shè)置的datatype設(shè)置為jsonp格式數(shù)據(jù)或json格式都可以。這篇文章對此進(jìn)行了實(shí)例介紹,需要的朋友可以參考下2014-06-06
jQuery實(shí)現(xiàn)網(wǎng)頁頂部固定導(dǎo)航效果代碼
這篇文章主要介紹了jQuery實(shí)現(xiàn)網(wǎng)頁頂部固定導(dǎo)航效果代碼,涉及jQuery響應(yīng)scroll事件動(dòng)態(tài)操作頁面元素樣式的相關(guān)技巧,需要的朋友可以參考下2015-12-12

