繁体   English   中英

输入验证与在多页表单上提交所需的内容

[英]input validation vs. required to submit on multi-page forms

我有一个多页表单,我正在尝试使用jquery validate进行验证。 用户基本上有4个选项: nextprevsavesubmit

savenextprev全部将当前页面保存为整个表单; submitsave相同,但是会触发一些其他与工作流程相关的功能,然后转到网站的另一部分。

我需要始终验证用户输入。 的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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM