在动态文本字段中显示记录的计数器


Display counter of records in dynamic text field

我有一个允许用户添加/删除的动态文本字段。首先,该字段将显示数据库中的记录。

$count = 1;
foreach($parts as $part)
{               
    echo "<input type='"hidden'" class='"countNumber'" value='"".$count."'">";
    echo $count++;
}

这是我的jQuery动态文本字段
JSFIDDLE:演示

用户单击+后,我需要增加我的号码。例如,如果我的数据库由5条记录组成,则计数将为1,2,3,4,5,然后一旦用户单击动态文本字段添加按钮,该数字将从以前的计数继续,并将变为6,7,8...。同样,如果用户单击-按钮,计数将再次重新排序

但我不知道该怎么做。任何帮助/指导都将不胜感激

我想你想得到最后一个输入数字;

  • 如果您将用类名countNumber回显大量输入

您可以使用count = $( ".countNumber" ).last().val();

  • 但如果你这样做,那么你的方法就便宜多了:

在php:中

foreach($parts as $part)
{               
   $count++;
}
echo "<input type='"hidden'" id='"countNumber'" value='"".$count."'">";

js:

count = $( "#countNumber" ).val();
  • 或者,您可以在php中将计数设置为脚本:

在php:中

echo "<script>count =".$count.";</script>"

Fiddle 的工作示例

重要提示:我建议您不要使用'"。您可以在没有'分离器的情况下使用它。

重要提示2:我建议您不要使用var hidden = $('<input></input>');来附加html元素。只需使用字符串var hidden = '<input></input>';

单击.remove时,您可以使用类并使用重新计数函数重新定义索引。这将再次从1开始对输入id进行重新排序(因此,如果您有1、2、3、4、5,并删除3,则所有字段将重新排序为1、2和3、4,下次按+时,您将添加5。)

演示:https://jsfiddle.net/p8hu7qnh/23/

function reorder() {
    var reCount = 1;
    $('.field').each(function() {
        elem = $(this);
        elem.attr('id', 'field' + reCount);
        elem.find('.number').text(reCount);
        elem.find('.hiddenField').attr('id', 'hiddenField_' + reCount);
        elem.find('.partNumber').attr('id', 'partNumber_' + reCount);
        elem.find('.description').attr('id', 'description_' + reCount);
        elem.find('.price').attr('id', 'price_' + reCount);            
        reCount++;
    });
    count = reCount-1;
};
$(document).on('click', '.remove', function() {
    console.log('removed');
    $(this).parent().remove();
    reorder();
});

编辑演示从5开始:https://jsfiddle.net/p8hu7qnh/25/

根据您的HTML结构,您可以使用CSS counter来解决此问题。

我使用了你的Fiddle并对其进行了更新:https://jsfiddle.net/p8hu7qnh/26/

神奇之处在于CSS:

.container {
    counter-reset: records; // Define the counter
}
li,
.added-field {
    counter-increment: records; // Increment the counter's value
}
li::before,
.added-field::before {
    content: counter(records); // Render the counter's value
}