0

在下面的函数中,我找到了 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();
}
4

2 回答 2

2

$('input.uniqueId').val()将为您提供 class 的第一个输入的值uniqueId。如果您只期望有一个这样的输入,只需更改输入的值。否则,您可能必须选择最后一个输入$('input.uniqueId:last').val()

Math.max 也有 2 个参数,它的目的是什么?

于 2013-04-02T21:01:38.070 回答
1

你试图确定下一个的方式.uniqueId是错误的。
首先,$("input.uniqueId").val()会给你选择中第一个元素的值。
第二个问题是Math.max(currentCount)which 将始终返回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;

// ...
于 2013-04-02T21:27:14.643 回答