我正在处理一个有两页的表单,技术上是一页,只是隐藏第二页,直到第一页完成。我的第一个任务是能够使用 parsley.js “验证”第一页,而不包括第二页中的元素。我通过禁用(通过 attr)第二页上的元素来做到这一点。因此,只有在单击“下一步”按钮时才会验证第一个项目。这很好用!不幸的是,在第二页上,在我从元素中 removeAttr('disabled') 之后,欧芹会忽略它们并且仍然只验证第一页,因此返回“true”并提交页面而不检查第二页中的任何元素.
谢谢阅读!
我正在处理一个有两页的表单,技术上是一页,只是隐藏第二页,直到第一页完成。我的第一个任务是能够使用 parsley.js “验证”第一页,而不包括第二页中的元素。我通过禁用(通过 attr)第二页上的元素来做到这一点。因此,只有在单击“下一步”按钮时才会验证第一个项目。这很好用!不幸的是,在第二页上,在我从元素中 removeAttr('disabled') 之后,欧芹会忽略它们并且仍然只验证第一页,因此返回“true”并提交页面而不检查第二页中的任何元素.
谢谢阅读!
好的,所以我想出了这一点,以防将来有人遇到这种情况。
加载第二页后,我销毁了欧芹,然后在重新启用元素后重新添加。
$('.new-account #page1 #next').on('click', function (e) {
e.preventDefault();
if ($('#new-account-form').parsley('isValid') == true) {
$('#new-account-form .hide input').removeAttr('disabled');
$('.new-account #page1').fadeOut(500, function() {
$('.new-account #page2').fadeIn(500);
});
// destroy
$('#new-account-form').parsley('destroy');
// Re-assign parsley to the form to include the second page now
$('#new-account-form').parsley();
} else {
$('#new-account-form').parsley('validate');
}
});