2

查询:

$('#partsOrderQty').blur(function(){

var rowCounter = $(this).val();

console.log(rowCounter);

var toAddRow = $("#skidListings").children().clone();

for (var i=0; i<rowCounter; i++) {

    $("#skidListings").append(toAddRow);

    console.log("Ran Once Just Now");

}

});

html:

<div id="skidListings">

        <input class="ConfirmQty" name="ConfirmQty" type="text" value="<?php echo $confirm;?>"/>

        <input class="ConfirmDesc" name="ConfirmDesc" type="text" value="<?php echo $des[$final]; ?>"/>

        <input class="ConfirmWeight" name="ConfirmWeight" type="text" value="<?php echo $ShipWeight[$final]*$confirm; ?>" />

        <input class="ConfirmClass" name="ConfirmClass" type="text" value="<?php echo $class[$final]; ?>"/>

        <input class="ConfirmNMFC" name="ConfirmNMFC" type="text"  value="<?php echo $NMFC[$final]; ?>"/>

        <input class="ConfirmLength" name="ConfirmLength" type="text" value="<?php echo $length[$final]; ?>"/>

        <input class="ConfirmWidth" name="ConfirmWidth" type="text" value="<?php echo $width[$final]; ?>" />

        <input class="ConfirmHeight" name="ConfirmHeight" type="text" value="<?php echo $height[$final]; ?>" /><br />   

    </div>

为什么即使它打印控制台消息的次数正确,它也只克隆一次?我必须清除这些值吗?该功能是允许我手动指定与从我们的数据库中提取的数量不同的件数。我知道我不能克隆带有 ID 的东西,但我为孩子们选择了,他们都没有 ID。我需要保留课程,我应该删除名称吗?这有关系吗?

编辑:根据请求http://jsfiddle.net/NxSwA/

4

2 回答 2

2

将代码更改为

var toAddRow = $("#skidListings").children();
for (var i=0; i<rowCounter; i++) {
  $("#skidListings").append(toAddRow.clone());
  console.log("Ran Once Just Now");
}

这应该工作

更新#1:来自 .append 文档的 Reson 如下:“如果以这种方式选择的元素插入到 DOM 中其他位置的单个位置,它将被移动到目标中(未克隆)”(感谢 @ Felix King 在下面的评论中)

于 2013-06-02T13:20:32.760 回答
2

我相信这就是您要寻找的...一个问题(至少我认为这是一个问题)是,如果我添加 2,我将得到 3(如预期的那样),但现在如果我添加 1,我应该期望有4对吗?相反,我会以 6 结束,因为它正在克隆#skidListings

我会将每个 skidListing 包装在 adiv class=skidListing中,然后只复制它们的一个实例......最后一个可能,它看起来像这样:

http://jsfiddle.net/NxSwA/1/

$('#partsOrderQty').blur(function () {
    var rowCounter = $(this).val();
    console.log(rowCounter);
    var toAddRow = $("#skidListings").children(".skidListing").last();
    for (var i = 0; i < rowCounter; i++) {
        $("#skidListings").append(toAddRow.clone());
        console.log("Ran Once Just Now");
    }
});

HTML

<input type="text" id="partsOrderQty" />
<div id="skidListings">
    <div class="skidListing">
        <input class="ConfirmQty" name="ConfirmQty" type="text" value="<?php echo $confirm;?>" />
        <input class="ConfirmDesc" name="ConfirmDesc" type="text" value="<?php echo $des[$final]; ?>" />
        <input class="ConfirmWeight" name="ConfirmWeight" type="text" value="<?php echo $ShipWeight[$final]*$confirm; ?>" />
        <input class="ConfirmClass" name="ConfirmClass" type="text" value="<?php echo $class[$final]; ?>" />
        <input class="ConfirmNMFC" name="ConfirmNMFC" type="text" value="<?php echo $NMFC[$final]; ?>" />
        <input class="ConfirmLength" name="ConfirmLength" type="text" value="<?php echo $length[$final]; ?>" />
        <input class="ConfirmWidth" name="ConfirmWidth" type="text" value="<?php echo $width[$final]; ?>" />
        <input class="ConfirmHeight" name="ConfirmHeight" type="text" value="<?php echo $height[$final]; ?>" />
        <br />
    </div>
</div>

请注意...如果我添加 2,我将有 3...如果我添加另一个 1,我将有 4(不是 6)。skidListing这也将允许您对CSS、在 JS 中收集数据、删除一些等有更多的控制。

于 2013-06-02T13:39:11.163 回答