克隆div并逐步重命名元素ID

时间:2010-10-24 13:06:40

标签: php javascript jquery forms clone

好的,我可以说我的div里面有表单元素。我希望能够使用jQuery单击按钮来克隆该div,并添加表单的第2版,因此所有元素ID的名称都将增加1。

<div id="card">
    <!-- PART 1 --> 
    <h1 class="card_build">Build your card options:</h1>

    <select id="country" name="country[]">
        <?php
            include('lib/class_dbcon.php');
            $connect = new doConnect();

            $q = mysql_query("SELECT * FROM country ORDER BY country_id ASC");
            while($row = mysql_fetch_assoc($q))
            {
                echo '<option value="'.$row['country_id'].'">'.$row['country_option'].'</option>';
            }
        ?>
    </select>

    <select id="filter" name="filter[]">
        <option value="">-- Select Filter --</option>
    </select>

    <select id="load_choice" name="load_choice[]">
        <option value="">-- Select Load_choice --</option>
    </select>

    <select id="plastic" name="plastic[]">
        <option value="">-- Select Plastic --</option>
    </select>

    <select id="UG_tipping" name="UG_tipping[]">
        <option value="">-- Select UG/Tipping --</option>
    </select>
    <!-- PART 1 -->
    <!-- PART 2 -->
    <div id="part2" style="margin-top:10px;">
    <h1 class="card_build">Customize the card:</h1>
    <input type="text" name="3rdLine" size="32" class="field" id="3rdLine">
    <input type="text" name="4thLine" size="32" class="field" id="4thLine">
    <input type="text" name="card_value" size="32" class="field" id="card_value">
    <label for="showpoints">Show "Points"?</label>
    <input type="checkbox" value="points" class="checkbox" checked="checked">
    <label for="cobrand">Co-branded?</label>
    <input type="checkbox" value="cobrand" class="checkbox" checked="checked">
    <textarea rows="5" name="message" class="textarea" id="message"></textarea>
    <hr>
    </div>
    <!-- PART 2 -->
</div>
    <a href="#" onCLick="moreFields()">ADD</a>

因此,如果您查看此代码并且您最后单击ADD链接,它将复制并将其转换为对div内的所有元素ID执行相同的操作。一个工具中的扳手是我想要一个最多5个克隆,所以脚本只能增加4次(或者5个并不重要,只要我能看到创建最大值的方法)。

我唯一的另一个问题是,当克隆div时,PHP注入会保持不变吗?提前谢谢,我整晚都在为这个问题吵架。

1 个答案:

答案 0 :(得分:1)

从您的代码中我认为您的主要问题是唯一地访问下拉组而不会发生冲突。如果是这种情况,我认为可以在没有为每个创建的组增加每个元素的id的压力下实现。如果我这样做,我会按如下方式接近它。

首先是DOM(一个例子):


<div id="card">
    <div class="group">
        <select id="country" name="country[]">
            <option>select</option>
            <option>1</option>
            <option>2</option>
            <option>3</option>
            <option>4</option>
        </select>
        <select id="filter" name="filter[]">
            <option>select</option>
            <option>1</option>
            <option>2</option>
            <option>3</option>
            <option>4</option>
        </select>
    </div>
</div>
<a id="more" href="">More</a>

然后是jquery:


$(function(){
    var newgroup = $('<div>').addClass('group');
    $('#more').click(function(e){
        e.preventDefault();
        $('.group').first().clone().appendTo(newgroup).appendTo('#card');
    });

    $('.group #country').live('change',function(){
        $(this).parent().find('#filter').val(1);
    });
});