2011-04-20 66 views
2

有沒有人有使用jQuery驗證和jQuery addmethod的用戶名檢查器的工作示例?JQuery用戶名驗證

事情是這樣的:

$("#register_form").validate({ 
    onkeyup:false, 
    rules: { 
     username: { 
      required: true, 
      minlength: 3, 
      usernameCheck: true // remote check for duplicate username 
     }, 
}); 

jQuery.validator.addMethod("usernameCheck", function(username) { 
    var isSuccess = false; 
    $.ajax({ 
     url: "username_availability.php", 
     data: "username=" + username, 
     async: false, 
     type: "POST", 
     success: 
     function(msg) { 
      isSuccess = parseInt(msg); 
     } 
    }); 
    return isSuccess; 
},""); 

我一直在尋找所有谷歌的天,我注意到了一些像這樣的轉無人應答或尚未解決的具有高觀看計數的線程。所以如果有人可以提供鏈接或解決方案,我相信很多JQuery noobs都會受益並感到高興。 :)

嘿傢伙,非常感謝您的所有 幫助。我設法找到我是 尋找雖然。

「牛奶榜樣」?真?它存在嗎?

- 是的我的兒子,它的存在和它的真棒: http://jquery.bassistance.de/validate/demo/milk/

+1

發佈您的username_availability.php – austinbv 2011-04-20 16:04:24

+0

您現在有什麼東西沒有用嗎?不使用驗證插件,這取決於你想要這個功能的先進程度。你想要服務器端和客戶端驗證還是隻需要服務器端? **專業提示:**僅使用客戶端驗證是一個壞主意。 – afuzzyllama 2011-04-20 16:04:33

+0

請注意,至少在將數據放入數據之前,您需要對用戶名進行網址編碼。 – Talljoe 2011-04-20 16:07:32

回答

1

我覺得你的問題是,成功的方法沒有被返回的時候調用。你可以改變你的代碼:

jQuery.validator.addMethod("usernameCheck", function(username) { 
    var result = $.ajax({ 
     url: "username_availability.php", 
     data: {username: username}, 
     async: false, 
     type: "POST" 
    }).responseText; 
    return result === '1'; 
},""); 
+0

這根本不起作用:/沒有錯誤消息得到顯示... – Ash 2011-04-20 18:13:58

+0

什麼是從您的PHP返回的值?如果他們不是'1'和'0',那麼你需要修改代碼。也許張貼重要的位。這[小提琴](http://jsfiddle.net/xdp3k/)表明上面的代碼可以工作,所以看看發生了什麼。使用Fiddler,Firebug或IE的開發工具來跟蹤請求。 – Talljoe 2011-04-20 18:56:14

0

使用remote類型,而不是讓你自己的。

$("#register_form").validate({ 
    onkeyup:false, 
    rules: { 
     username: { 
      required: true, 
      minlength: 3, 
      remote:'username_availability.php' 
     }, 
}); 

它會的username=foo一個參數傳遞給您的username_availability.php頁面。從該頁面返回true或false。