jquery校驗 remote快取 remote只驗證一次 解決辦法
jquery校驗,為了實現非同步使用者名稱是否存在功能,往往要用 jquery remote方法,然而,用remote方法,往往會有快取,只請求一次,即使內容改變,錯誤結果還是一樣。
折騰了兩天,什麼修改jquery原始檔,或者加程式碼清空第一次產生的快取,各種辦法都沒用。又不想放棄jquery alidate的各種好處。最後不得已使用ajax和jquery共同實現校驗。
實現方法。使用jquery alidate的自定義新增驗證方法,新增一個驗證方法,方法如下:
//校驗使用者名稱是否存在
jQuery.validator.addMethod("usernamecz", function (value, element) {
var poin;
$.ajax({
type : "post",
url : "/ashx/Check.ashx",
data : "userid=" + $("#username").val(),
async : false,
success : function(data){
data = eval("(" + data + ")");
poin = data;
}
});
return this.optional(element) || poin;
});
自定義方法的返回值 return this.optional(element) || poin; 驗證結果由poin變數所決定。
使用例子:
rules: {
username: {
required: true,
usernamecz: true
},
messages: {
username: {
required: "請輸入使用者名稱",
usernamecz: "使用者名稱已被佔用"
}