在 php javascript 之后动态插入行


Dynamic row insert after php javascript

当我单击plus按钮时,我有一个动态行输入。但是我的行被添加到我的页面顶部,我希望它们被添加到我的第一行之后。这是我的代码:

<?php
 ?>
<div style="width:90%;margin:auto;">
    <form method="post">
    <div id="itemRows">
    </div>
    </form>
</div>
<script type="text/javascript">
var rowNum = 0;
function addRow(frm) {
    rowNum ++;
    var row = '<p id="rowNum'+rowNum+'"> <input type="text" name="name[]" value="'+frm.add_name.value+'"> <input type="button" value="Remove" onclick="removeRow('+rowNum+');"></p>';
    jQuery('#itemRows').append(row);
    frm.add_qty.value = '';
    frm.add_name.value = '';
$( "name[]" ).insertAfter( "#add_name" );
}
function removeRow(rnum) {
    jQuery('#rowNum'+rnum).remove();
}
</script>

这是我的意见:

<b>Dimanche</b> </br><?php echo $date1 ?>   
        </td>
        <!-- numéro de projet du dimanche -->
        <td>
            <span id="numpro" >
                <form method="post" action="" onsubmit="return false;">
                    <input onclick="addRow(this.form);" type="button" value="+" /> 
                    <input type="text" id="name" name="add_name"onkeypress="return handleEnter(event, this, 'task');"/>
                    <?php
                        if($result!=false && mysqli_num_rows($result)>0){
                            while($product = mysqli_fetch_array($result)):
                    ?>
                                <p id="oldRow<?=$product['id']?>">  <input type="text" name="name<?=$product['id']?>" value="<?=$product['name']?>" /> <input type="checkbox" name="delete_ids[]" value="<?=$product['id']?>"> Mark to delete</p>
                            <?php
                            endwhile;
                            }
                            ?>
                </form>

使用 JQuery 的 .append() 方法在特定标签中一个接一个地添加元素。

使用以下行更改代码:

$( "name[]" ).append( "#add_name" );

您可以使用 jQuery 中的 .after 函数在特定元素后追加https://api.jquery.com/after/

追加函数/插入之后将起作用。

但是在您的代码中,您直接将元素属性用作

$( "name[]" ).insertAfter( "#add_name" );

$( "name[]" ).append( "#add_name" );

相反,您需要使用以下:

  1. 将文本框"name[]"的名称值更改为其他名称,例如"name_test"并将其附加到"add_name"之后

  2. 此外,您使用"add_name"作为 id ( "#add_name" )但它是输入文本框的名称属性

  3. 并且您需要在"add_name"之后附加在row变量中创建的整行您需要将代码更改为

$("input[name=add_name]" ).after(row);

但是,它仍然在每个元素的顶部添加,即以堆栈方式添加。

因此,您需要通过"add_name"父级,即表单并在该父级中附加

$( "input[name=add_name]" ).parent().append(row);

它应该:)工作

这是上述场景的演示小提琴