我有一个巨大的表格,我想在不同的步骤中拆分,但我需要在进入下一步之前验证当前步骤中的字段。
例如:我的表单有 40 个字段,它们分为 4 个步骤(每个步骤 10 个字段)。在 HTML 中,40 个在同一页面中,但使用 jQuery,我只显示前 10 个和一个下一步按钮,第四页包含“提交”按钮。在进行下一步之前,我需要一种方法来调用这十个字段的验证。
有没有办法做到这一点?
问候。
我有一个巨大的表格,我想在不同的步骤中拆分,但我需要在进入下一步之前验证当前步骤中的字段。
例如:我的表单有 40 个字段,它们分为 4 个步骤(每个步骤 10 个字段)。在 HTML 中,40 个在同一页面中,但使用 jQuery,我只显示前 10 个和一个下一步按钮,第四页包含“提交”按钮。在进行下一步之前,我需要一种方法来调用这十个字段的验证。
有没有办法做到这一点?
问候。
假设您使用默认的 mvc3 非侵入式验证,您可以使用循环和单元素验证对所需元素调用验证
您可以使用jQuery Validation 插件。这有一个在验证时忽略元素的选项。因此,例如,您可以用一个类标记所有未显示(并且不需要验证)的字段。例如,要忽略所有表单元素,class="ignore"
您可以这样做:
$("#myform").validate({
ignore: ".ignore"
})
如果您使用按钮在每个步骤之间移动,您可以修改您的页面,为每个步骤设置一个单独的表单。然后,您可以将验证限制为提交按钮的父表单,并使用“步骤”的验证来确定是否为下一步启用/显示表单。这是一些示例代码:
$(".stepButton").live("click", function() {
if (isValid(this)) {
// code to proceed to next step
}
});
function isValid(el) {
var $thisform = $(el).parent().parent();
$thisform.validate();
return $thisform.valid();
}
尽管通过使用属性标记元素来忽略元素class="ignore"
有效,但 MVC 3 默认使用 jQuery 的验证插件,并且plug-in will not validate disabled fields
. 除了可见的 10 个字段之外,您隐藏元素的代码,您也可以禁用这些元素并且它们不会被验证(请注意,这些禁用的字段也不会发布到服务器)。
例如
$('input').attr('disabled', 'disabled');