我正在尝试通过查看两个不同的字段来远程验证字段。问题是,在我看到的关于如何远程验证发送附加数据的所有示例中,他们使用正在处理的其他字段的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();
}
}
现在每个字段都知道它属于哪种形式!
答案 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
}
);
}