使用JQuery远程表单验证发送其他信息

时间:2010-12-01 19:13:20

标签: jquery jquery-validate

我正在尝试通过查看两个不同的字段来远程验证字段。问题是,在我看到的关于如何远程验证发送附加数据的所有示例中,他们使用正在处理的其他字段的id。因此,远程()的jQuery验证API页面上的示例使用“#username”并将其发送到电子邮件字段之外。

我的页面很奇怪,并且有多个相同的表单,页面上的表单数量是可变的,所以我不能为每个字段都有唯一的ID。有没有办法找出哪个字段或表单正在验证/进行远程调用?我尝试了类似下面的内容,因为我认为$(this)会被验证的文本框,或者个别表单被验证,但似乎并非如此。

number: {
                  required: true,
                  number: true,
                  remote: {
                    url: "confirm.php",
                    data: {
                        toy: function() {
                            return $('select[name="toy"]:selected',this).val();
                        }
                    }
                  }
          }

谢谢, 贾里德

编辑:我最终找到了让它运转的方法。传递表格的建议给了我这个想法。

由于我在页面上有多个表单,我正在使用 $('form')。each(function(){$(this).validate({....})});

所以我刚刚在验证调用之前用var form = $(this)保存了对当前表单的引用,然后在我之前给出的示例中我只需做一个小改动:

data: {
    toy: function() {
        return $('select[name="toy"]',form).val();
    }
}

现在每个字段都知道它属于哪种形式!

1 个答案:

答案 0 :(得分:1)

您可以为每个表单分配一个唯一的formId,无论何时提交表单,您都可以提交formId以及表单中的其他信息,以便确定哪个表单正在提交?

例如,在表单的html代码中,您可以执行以下操作:

表单#1 :(表单ID为1)

<form id="form_1">
Name: <input type='text' id='name_1'> <br>
Address: <input type='text' id='address_1'> <br> 
<input type='button' value='Submit' onclick='validate(1);'>
</form>

表格#2 :(表格ID为2)

<form id="form_2">
Name: <input type='text' id='name_2'> <br>
Address: <input type='text' id='address_2'> <br> 
<input type='button' value='Submit' onclick='validate(2);'>
</form>

在javascript中,类似这样:

function validate(formId)
{
   var data = {};
   //Example data that is to be submitted for validation:
   data.name = $("#name_" + formId).val();
   data.address = $("#address_" + formId).val();
   //.. and so on
   data.formId = formId;

   $.post('http://example.com/confirm.php', data, function(result)
     {
       //process the return of the remote validation here, 
       //found in the variable: result
     }
   );
}