【问题标题】:How to skip an accordion section if form within section has already been submitted如果部分内的表单已提交,如何跳过手风琴部分
【发布时间】:2011-04-30 15:00:53
【问题描述】:

我正在使用 jQuery UI Accordion 来包含几个单独的表单。当用户单击“继续”时,该部分中的表单被提交,并且下一部分打开。用户可以单击“编辑”按钮打开先前提交的部分并编辑该部分。完成后,用户单击“继续”,重新提交表单,然后打开下一部分。我想设置它以便打开下一个未提交的部分,而不仅仅是下一个部分。有什么建议吗?

这是我目前用来打开下一部分的部分代码:

$("#applicant-form").validate({
    submitHandler: function(form) {
            $(form).ajaxSubmit({    
...

    complete: function(e) {

   var acc = $("#accordion"),
index = acc.accordion('option','active'),
total = acc.children('div').length,
nxt = index + 1;
    acc.accordion('activate', nxt);
        }   
  });       

});

【问题讨论】:

    标签: jquery accordion jquery-ui-accordion multipartform-data


    【解决方案1】:

    您可以为每个包含 div 的表单添加一个 state 属性,该属性的值将是以下两个值之一:0 表示未提交,1 表示已提交。

    然后将您的代码更新为:

    complete: function(e){
      var acc = $('#accordion'),
      index = acc.accordion('option','active'),
      total = acc.children('div').length;
    
      // Updating state of just submitted form 
      acc.children('div:eq('+index+')').attr('state',1);
    
      // Finding next unsubmitted form
      acc.children('div').each(function(i){
        if($(this).attr('state') == 0) {
          nxt = i;
          return false;
        }
      })
    
      acc.accordion('activate',nxt);
    }
    

    【讨论】:

    • 谢谢,但这似乎对我不起作用。现在,当我单击“继续”时,该部分会关闭,但下一个不会打开。
    • 抱歉,我意识到我犯了 2 个错误 1. 第 3 行的手风琴拼写错误 2. 找到第一个未提交的表单时忘记退出迭代器(通过返回 false)。刚刚更新了代码以反映这些变化。
    • 我仍然遇到这个问题。出于某种原因,当我使用此代码时,一个部分被完全跳过,即使该部分尚未提交。你知道你的代码中有什么可能导致这种情况吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多