php javascript之后的动态行插入

时间:2014-03-31 13:45:26

标签: javascript php html dynamic input

单击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>

3 个答案:

答案 0 :(得分:2)

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

使用以下行更改您的代码:

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

追加函数/ insertAfter将起作用。

但是在你的代码中,你直接使用了元素属性

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

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

相反,您需要使用以下内容:

  1. 将文本框“name []”的名称值更改为其他名称,例如“name_test”,并在“add_name”之后追加

  2. 您还使用“add_name”作为标识( "#add_name" ),但它是输入文本框的名称属性

  3. 您需要追加row中创建的整行,以便在“add_name”之后变通 您需要将代码更改为

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

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

    因此,您需要通过“add_name”parent ,即表单和在该父中追加

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

    它应该工作:)

    以上情况为 DEMO Fiddle