【发布时间】:2012-09-17 10:29:13
【问题描述】:
我正在尝试分别验证表单的不同部分。不幸的是,表单是由 CMS 生成的,所以我的操作受到限制。
我尝试使用当前表单部分作为索引创建validate 对象数组。即:
//initialize validation
validators = [
$('#donation_amount').validate({ rules:{ amount: { required: true } } }),
$('#personal_information').validate({ rules:{ Street: { required: true } } })
];
并像这样在各个部分中切换:
$('#btn-next').click(function() {
//if validation is true, show next page
if (validators[curOrder].valid()) {
var old = $('.active');
var oldOrder = old.attr('data-order');
var newOrder = parseInt(oldOrder) + 1;
old.removeClass('active');
$("[data-order='" + newOrder + "']").addClass('active');
curOrder = newOrder;
}else{
console.log("invalid");
}
});
然而,验证总是返回true。
这里是有问题的页面:https://salsa3.salsalabs.com/o/50388/p/salsa/donation/common/public/?donate_page_KEY=8461
【问题讨论】:
-
好的,有道理。但是如何更改命令的验证规则?这似乎是我要在每个部分班次时重新初始化表单的地方。
-
我不确定你在问什么,我也不完全明白你想怎么做。我过去所做的是将多部分表单分解为多个表单。在所有表单上初始化
validate()一次,并在单击next按钮时使用.valid()测试表单。 -
对不起,让我换个说法。因此,在每一步中,我只想验证显示字段。因此,如果我有一个全面的规则块,即使用户还没有访问这些字段,它也会返回一个无效的结果,对吧?
-
那么我之前的评论就成立了。每个部分都有自己的
form,您可以单独验证。否则,您将处理一些非常不必要的复杂问题。
标签: javascript jquery forms jquery-validate validation