Php 调整JavaScript计数

Php 调整JavaScript计数,php,jquery,Php,Jquery,我会尽可能地从逻辑上解释这一点。基本上,我在我的网站上有一个设施,用户可以输入他们的就业历史。这是一个带有输入字段的表单。为了简化操作,我有一个jQuery函数,它可以克隆这些输入字段,并允许用户一次输入多个记录 在添加新记录时,用户可能希望从列表中删除一条记录,在这种情况下,他们可以按每条记录旁边的“删除”链接 HTML(1项): 例如,当表单发布时,如果页面上有多条记录,并且存在一些验证错误,那么表单将重新显示,显示这些相同的记录 还有一个对函数initNewInputs()的调用,该函数在

我会尽可能地从逻辑上解释这一点。基本上,我在我的网站上有一个设施,用户可以输入他们的就业历史。这是一个带有输入字段的表单。为了简化操作,我有一个jQuery函数,它可以克隆这些输入字段,并允许用户一次输入多个记录

在添加新记录时,用户可能希望从列表中删除一条记录,在这种情况下,他们可以按每条记录旁边的“删除”链接

HTML(1项):

例如,当表单发布时,如果页面上有多条记录,并且存在一些验证错误,那么表单将重新显示,显示这些相同的记录

还有一个对函数
initNewInputs()
的调用,该函数在新的 计数器值。这样,新的表单输入元素可以接收唯一的ID和NAME属性(在上面的HTML代码中,您可以看到属性值中的整数索引)

这一切都很好。我遇到的问题如下:

  • 用户开始添加新记录

    • 记录1-计数0
    • 记录2-计数1
    • 记录3-计数2
    • 记录4-计数3
    • 记录5-计数4

  • 用户删除记录3和4(因此我们现在只有3条记录)。记录5现在是记录3,但保持相同的计数值(4)

  • 然后,用户添加一条新记录:

    • 记录4-计数5

  • 用户发布表单-存在一些验证错误,因此表单将重新显示。PHP脚本确定它收到了4条记录,因此它将计数预先设置为3

  • 用户决定在修复错误时添加新记录

    • 记录5-计数4
  • 这就是问题所在-页面上已经存在计数值为4的记录。也就是说,它现在已经创建了与页面上已有的输入元素具有相同ID和名称属性值的输入元素


    我知道这有点难理解,但我会感谢任何帮助。它很可能需要修改计数器的设置方式。

    而不是使用
    计数($\u POST['History'])
    来填充
    计数器。
    使用
    $\u POST['History']
    数组的上限(在这种情况下,我指的是最高索引数)。

    hmm好主意。让我试一试,我很快就会回来的。是的,这似乎成功了。我会继续测试,如果一切正常,我会接受你的答案!谢谢,听起来不错。别忘了给我投票支持这些努力:)当然:)这么简单的事情,我可能永远也想不到自己!再次感谢。
    <div class="history-form-fields">
    
    <div class="row">
      <label for="History_0_type">Type</label>
      <select name="History[0][type]" id="History_0_type">
      <option value="">Select</option>
      </select>
    </div>
    
    <div class="row">
      <label for="History_0_name">Name</label>
      <input type="text" name="History[0][name]" id="History_0_name" />
    </div>
    
    <div class="row">
      <label for="History_0_year">Year</label>
      <select name="History[0][year]" id="History_0_year">
      <option value="">Select</option>
      </select>
    </div>
    
    </div>
    
    <input id="add" type="button" value="Add Another" />    
    
    <script type="text/javascript">
        var counter = <?php echo $historyCount; ?>;
    
        $('#add').click(function(){
            var divCloned = $('.history-form-fields:first').clone();
            divCloned.insertAfter('.history-form-fields:last');
            initNewInputs(divCloned.children('.row'), ++counter);
        });
    
        $('.remove').live('click', function(){
            $(this).parent().remove();
            return false;
        });
    </script>
    
    $historyCount=isset($_POST['History']) ? count($_POST['History'])-1 : 0;