2012-09-20 101 views
1

所以我在看幾天前我寫的一些代碼,它完美的工作,我完全不知道如何。我希望你們中的一個能幫助我。jQuery id選擇器和validate.js

在我的驗證代碼中,我正在執行一些ajax請求。這是使用「遠程」標籤完成的。這些請求將輸入到表單中的用戶名和電子郵件發送到服務器。

$("#signup-form").validate({ 
    rules: { 
     username: { 
      required: true, 
      remote: { 
       url: "/CheckDuplicateUsername/", 
       type: "get", 
       data: { 
        username: $("#username").val() 
       } 
      } 
     }, 

     email: { 
      required: true, 
      remote: { 
       url: "/CheckDuplicateEmail/", 
       type: "get", 
       data: { 
        email : $("#email").val() 
       } 
      } 
     }, 
//More code 

請注意,我將電子郵件和用戶名字段中的值發送到服務器。我使用ID獲取這些值。我想我從表單的標籤中獲取這些數據。現在讓我告訴你我的HTML。請注意,我的用戶名和密碼標記中的ID與上面我的jQuery代碼中使用的ID不同。

<div class="fieldWrapper"> 

       <label for="id_username">Username: </label> 
       <input id="id_username" type="text" placeholder="First Name" name="username" maxlength="30" class="valid"> 
      </div> 

<div class="fieldWrapper"> 

       <label for="id_email">Email</label> 
       <input id="id_email" type="text" placeholder="Email" name="email" maxlength="75"> 
      </div> 

我的兩個輸入標籤分別具有ids「id_username」和「id_email」。但驗證代碼選擇帶有「用戶名」和「電子郵件」標籤的標籤。請注意,我的驗證代碼正在將正確的數據發送到服務器。如果我嘗試更改驗證代碼以選擇與「id_username」和「id_email」關聯的標記內的值,則會將空字符串發送到服務器。怎麼會這樣!?

謝謝!

+0

你確定它們在同一頁上嗎?我的意思是JS和你的HTML? – dpp

回答

3

這意味着驗證具有name屬性等於username場當你有

rules: { 
     username: { 
... 

。當您指定remote選項時,您可以使用data發送其他字段的數據。就像從插件文檔這個例子:

「使得所需的電子郵件字段,電子郵件,確實給 檢查遠程請求如果給定的地址已經採取此外,HTTP 方法設置爲」。發帖「,並且用戶名將沿着電子郵件地址 發送。」

$("#myform").validate({ 
    rules: { 
    email: { 
     required: true, 
     email: true, 
     remote: { 
     url: "check-email.php", 
     type: "post", 
     data: { 
      username: function() { 
      return $("#username").val(); 
      } 
     } 
     } 
    } 
    } 
});