[英]input validation vs. required to submit on multi-page forms
我有一个多页表单,我正在尝试使用jquery validate进行验证。 用户基本上有4个选项: next
, prev
, save
, submit
。
save
, next
和prev
全部将当前页面保存为整个表单; submit
与save
相同,但是会触发一些其他与工作流程相关的功能,然后转到网站的另一部分。
我需要始终验证用户输入。 的jQuery验证工作得很好。 但是...我需要根据需要设置一些字段。 因为表单保存在每个步骤中,所以输入必须始终有效,但是直到最后( submit
),我才不需要进行验证。
表单将针对其所在页面构建动态的验证列表,例如:
$(document).ready(function() {
$("#ctl01").validate({ onsubmit: false });
$("#_Qn_0e868ebe").rules("add", { maxlength: 200 });
$("#_Qn_d69e75a4").rules("add", { number: true });
$("#_Qn_adffbdec").rules("add", { maxlength: 200 });
$("#_Qn_adffbdec").rules("add", { digits: true });
});
因此,现在,对于必填字段,我向它们添加了一个.isrequired
类,并且我已经.isrequired
了<asp:linkbutton>
的耦合以触发此客户端脚本:
function FormIsValid(sender, ishardsubmit) {
var form = $("#ctl01");
form.validate();
if (form.valid()) {
//if (ishardsubmit) {
// if (!IsRequiredValid()) { return false; }
//}
__doPostBack(sender, '');
}
return;
}
到目前为止,该部分(输入验证部分)运行良好。 我注释掉的部分不是很有效。 它会触发此功能,其中我试图动态添加所需的验证器并重新评估表单。 我可以看到它对我的每个必填字段都命中了.each循环,但是它似乎无法正常工作,因为它即使在必填字段为空的情况下也能true
返回。
function IsRequiredValid() {
var $requiredgroup = $(".isrequired");
$requiredgroup.each(function (i, item) {
$(item).rules("add", { required: true });
});
form.validate();
return form.valid();
}
我的想法是放下.net所需的字段验证器来执行此部分的操作,但是,如果可能的话,我想坚持一个解决方案。 特别是因为这感觉非常接近工作。
有什么想法吗? 救命? 谢谢!
您的jQuery .each()
方法构造不正确。
您想在迭代中定位整个对象,而不是键/值对。 因此i, item
从函数参数中删除i, item
并使用$(this)
作为目标选择器。
function IsRequiredValid() {
var $requiredgroup = $(".isrequired");
$requiredgroup.each(function() {
$(this).rules("add", { required: true });
});
// form.validate(); // remove this line -> 100% superfluous
return form.valid();
}
关于你提到的form.validate()
在这两个功能是:你不能调用.validate()
不止一次在页面上。 只能调用一次以初始化表单上的插件。
以后再调用将无效。 否则,我们就不需要使用.rules()
方法,我们只需调用.validate()
我们需要改变规则的任何时间。 但是,绝对不是这样。
将一个类添加到您的必填字段中,例如:“ SubmitRequired”实现两个功能,如下所示:
function SaveClick(){
//ignore SubmitRequired on save (and any disabled fields)
$("form").validate({ ignore: ".SubmitRequired, [disabled]" });
if $("form").valid()
{
do something;
}
}
function SubmitClick(){
//ignore only disabled fields (if any))
$("form").validate({ ignore: "[disabled]" });
if $("form").valid()
{
do something;
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.