2012-09-20 100 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(); 
      } 
     } 
     } 
    } 
    } 
});