在下面的函数中,我找到了ID的最大计数,然后添加1.一切正常,除了没有看到添加到DOM的新值,因此它们在调用函数时不会递增时间。
我没有正确地将新值添加到DOM中吗?
function addEdu(){
var currentCount = $('input.uniqueId').val();
currentCount = Math.max(currentCount);
var nextCount = parseInt(currentCount) + 1;
var newEdu = "<input type='hidden' name='fieldId[]' value='" + nextCount + "' class='uniqueId' /><p class='dual'><input type='text' name='educationTitle[]' "; //Shortened for clarity
$("#eduHistory").append(newEdu);
$( ".datepicker" ).datepicker();
}
答案 0 :(得分:2)
$('input.uniqueId').val()
会为您提供类uniqueId
的第一个输入值。如果您只希望有一个这样的输入,只需更改输入的值。否则,您可能必须选择最后一个输入$('input.uniqueId:last').val()
。
Math.max也有两个参数,它的目的是什么?
答案 1 :(得分:1)
您尝试确定下一个.uniqueId
的方式是错误的。
首先,$("input.uniqueId").val()
将为您提供选择中第一个元素的值
第二个问题是Math.max(currentCount)
,它将始终返回currentCount
的值,正如已经提到的那样,它是第一个元素的值。
这应该按预期工作:
// get an array with all uniqueIds
var currentIds = $("input.uniqueId").map(function() {
return parseInt($(this).val(), 10);
});
// determine the biggest uniqueId
var currentCount = Math.max.apply(Math, currentIds);
// next uniqueId (if there is no "input.uniqueId" then currentCount will be -Infinity)
var nextCount = (currentCount === -Infinity ? 0 : currentCount) + 1;
// ...