我有一个允许用户添加/删除的动态文本字段。首先,该字段将显示数据库中的记录。
$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
}