3

複製されたフィールドセット内にフィールドセットを複製する必要があります。 ここに画像の説明を入力

だから私の通常の構造は

ここに画像の説明を入力

クリックadd new agenda fieldすると、次のような大きなフィールドが正常に複製されます

ここに画像の説明を入力

しかし、クリックadd new fileすると、現在のフィールドではなく親フィールドに新しいフィールドが追加されるだけです

ここに画像の説明を入力

私のコードは

<div id="agenda_placeholder">
    <div id="agenda_template">
    <fieldset>
        <legend>Agenda Details</legend>

        <ol>
            <li>
                <label for=topic_name>Topic Name</label>
                <input id=topic_name name=topic_name type=text placeholder="ACAT Briefing" required autofocus>
            </li>
            <li>
                <label for=topic_time>Time</label>
                <input id=topic_time name=topic_time type=text placeholder="2.00 - 2.30 ">
            </li>
            <li>
                <label for=presenter>Presenter</label>
                <input id=presenter name=presenter type=text placeholder="Name LastName">
            </li>


            <li>
            <div id="file_placeholder">
            <div id="file_template">
                <fieldset>
                    <legend>File Details</legend>

                        <ol>
                            <li>
                                    <label for=file_description>File Description</label>
                                    <input id=file_description name=file_description type=file_description placeholder="Ex. Weather Stats">
                            </li>
                            <li>
                                    <label for=file_name>File Name</label>
                                    <input id=file_name name=file_name type=file_name placeholder="Exact file name Eg:weather.docx">
                            </li>
                            </ol>
                        </div> <!-- file_template -->
                     </div> <!-- file_placeholder -->   
                     <button type="button" name="AddNewFile" onclick="Add();">Add New File</button> 
                </fieldset>
            </li>
         </ol>
        </div> <!-- agenda_template -->
    </div> <!-- agenda_placeholder -->
        <button type="button" name="AddNewAgenda" onclick="Add_Agenda();">Add New Agenda Field</button>
    </fieldset>

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
        <script>
        var _counter = 0;
function Add() {
    _counter++;
    var oClone = document.getElementById("file_template").cloneNode(true);


    oClone.id += (_counter + "");
    document.getElementById("file_placeholder").appendChild(oClone);
}

function Add_Agenda() {
    _counter++;
    var oClone = document.getElementById("agenda_template").cloneNode(true);
    oClone.id += (_counter + "");
    document.getElementById("agenda_placeholder").appendChild(oClone);
}

では、複製されたフィールドセット内でフィールドセットを複製するにはどうすればよいでしょうか?

4

1 に答える 1

2

まず、HTML が無効です。タグが重複しています

あなたのadd関数では、ステートメント document.getElementById("file_placeholder") は id の最初の一致を返しますがfile_placeholder、これは正しくありません。

必要なのは、どのボタンがクリックされたかを知り、その親 div を複製し、複製された div をボタンの祖父母 div に追加することです。

同じロジックを適用できAdd_agendaますが、複製しているアジェンダに追加されたファイルを削除することに注意してください。

function Add(btn) {
     _counter++;
    var parentFileTemplate = $(btn).parent("div");
    parentFileTemplate.attr('id',"file_template" + _counter );
    var parentFilePlaceHolder = parentFileTemplate.parent();
    cloned = parentFileTemplate.clone();
    cloned.attr('id',"file_template" + _counter );
    parentFilePlaceHolder.append(cloned);
  }

thisまた、関数を呼び出すときにパラメーターとして追加する必要があります。

<button type="button" name="AddNewFile" onclick="Add();">

になります:

<button type="button" name="AddNewFile" onclick="Add(this);">
于 2012-10-18T19:05:00.397 に答える