1

所以我在看我几天前写的一些代码,它工作得很好,我完全不知道怎么做。我希望你们中的一个可以帮助我。

在我的验证代码中,我正在执行一些 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>

我的两个输入标签的 ID 分别为“id_username”和“id_email”。但是验证代码选择了 ID 为“用户名”和“电子邮件”的标签。请注意,我的验证代码正在向服务器发送正确的数据。如果我尝试更改验证代码以选择与“id_username”和“id_email”关联的标签内的值,则会将空字符串发送到服务器。怎么会这样!?

谢谢!

4

1 回答 1

3

当你有

rules: {
        username: {
...

这意味着 validate 具有name属性 equal的字段username。当您指定remote选项时,您可以data用于发送附加字段的数据。就像插件文档中的这个例子一样:

“使电子邮件字段成为必需的电子邮件并发出远程请求以检查给定地址是否已被占用。此外,http 方法设置为“post”,并且用户名与电子邮件地址一起发送。”

$("#myform").validate({
  rules: {
    email: {
      required: true,
      email: true,
      remote: {
        url: "check-email.php",
        type: "post",
        data: {
          username: function() {
            return $("#username").val();
          }
        }
      }
    }
  }
});
于 2012-09-20T00:44:49.357 回答