0

以前のフィールドセットのデータを意図したとおりに保持せずに、現在クローンを作成しているフィールドセット。RobGとATOzTOAにご協力いただきありがとうございます。

私が今抱えている唯一の問題は、複製されたフィールドセットでカレンダーが機能しないことです。

私は人々が私と同じ問題を抱えているいくつかのスレッドを調べました、そして私は主題に関して別のスレッドを作成したことをお詫びします。

カレンダードロップダウンのスクリプト。

<!-- calendar dropdown -->
<script>
$(document).ready(function() {    
$("#datepicker").datepicker();      
});    
</script>     

フィールドセットのクローンを作成するスクリプト。

<!-- clone fieldset -->          
<script>
var _counter = 0;
function Add() {
_counter++;
var oClone = document.getElementById("template").cloneNode(true);
oClone.id += (_counter + "");
document.getElementById("placeholder").appendChild(oClone);
var inputs = oClone.getElementsByTagName('input');
for (var i=0, iLen=inputs.length; 
i<iLen; i++) {
inputs[i].value = '';
}
}
</script>

複製されるフィールドセット。

<div id="placeholder">
<!-- template -->
<div id="template">
<!-- event fieldset -->
<fieldset>           
  <label class="field-first" required>Event: &#42;<input type="text" name="event" value="" /></label>
  <label class="field-first" required>Date: &#42;<input type="text" id="datepicker" name="date" value="" /></label>
  <label class="field-first" required>Net Request Amount: &#42;<input type="text" name="request" value="" /></label>

  <div class="description"><p>Please type a <strong><em>DETAILED</em></strong> description of the item/event/activity:<br /></p></div>

  <textarea name="describe" cols="60" rows="10" required></textarea>
<!-- event fieldset -->
</fieldset>
<!-- template -->      
</div>
<!-- placeholder -->
</div> 
<!-- buttons -->
<button class="right-button" type="submit" name="submit" value="Submit">Submit</button>
<button class="left-button" "btn" type="button" name="Submit"  onclick="Add();">Add New Event</button>
4

2 に答える 2

0

フレームセット内の各要素をトラバースし、text()を""に設定する必要があります。

var div = document.getElementById('template'):
var labels = div.getElementsByTagName('label');
for (var i = 0; i < divs.length; i += 1) {
  code = labels[i].innerHTML;
    // As there is a input element inside the label, we have to modify the HTML code
    codeArray = code.split('&lt');
    codeArray[0] = '';
    code = codeArray.join('&lt;');
    labels[i] = code;
}
于 2012-12-17T05:29:14.230 に答える
0

おそらく、ラベルにコンテンツを追加しています。を使用getElementsByTagNameしてクローンからラベルを取得し、innerHTMLを''(空の文字列)に設定して子ノードを削除できます(または子ノードをループして削除しますが、innerHTMLプロパティの設定は簡単です)。ラベルをループしながら、それを必要とする可能性のある他のプロパティを変更できます。

入力要素の値をクリアしたいだけの場合、同じ戦略では、それらのプロパティを``(空の文字列)にのみ使用getElementsByTagName('input')して設定します。value

「first_name」という名前の3つの入力要素があることに注意してください。それらのどれもが名ではないように思われるときにそれを行うのは良い考えではないようです。それらが保持するデータまたはそれが置かれる目的を表す名前を使用してください。また、IDが「datepicker」のものは必要ないようです。IDを削除するか、必要に応じて(unlikley)、クローンされた各フラグメントに固有になるように値を変更します。

編集

getElementsByTagName入力値を「」に設定するために使用するには:

var inputs = oClone.getElementsByTagName('input');

for (var i=0, iLen=inputs.length; i<iLen; i++) {
    inputs[i].value = '';
}
于 2012-12-17T06:06:41.720 に答える