1
http://www.quirksmode.org/dom/domform.html如何增加輸入字段名在他們中間
我想實現這個擴展功能的形式在我的項目。由於我使用CakePHP的命名約定編譯,在我的擴展形式我有2個字段名:
[學生] [0] [年齡]
[學生] [0] [等級]
腳本沒有按」因爲它只在字段名稱末尾添加計數器,所有這些都類似於:fieldName + counter,而我試圖增加,因爲您可能已經猜到了,如下所示:
[Student] [1] [年齡]
[學生] [1] [等級]
[學生] [2] [年齡]
[學生] [2] [級]
我是新來的Javascript,希望有人可以建議如何解決這個問題。
HTML:
<span id="readroot" style="display: none">
<input class="btn btn-default" type="button" value="Remove review" onclick="this.parentNode.parentNode.removeChild(this.parentNode);" />
<br /><br />
<div class="row">
<div class="col-lg-3">
<div class="form-group required"><label for="Student1Age">Age</label><input name="data[Student][0][age]" class="form-control" placeholder="Age" maxlength="11" type="text" id="Student1Age" required="required"/></div>
</div>
<div class="col-lg-3">
<div class="form-group required">
<label for="Student1Grade">級別</label>
<select name="data[Student][0][grade]" class="form-control" id="Student1Grade" required="required">
<option value="">Please Select</option>
<option value="1">Grade 1</option>
<option value="2">Grade 2</option>
</select>
</div>
</div>
</div></span>
<span id="writeroot"></span><input class="btn btn-default" type="button" onclick="moreFields()" value="Give me more fields!" />
的Javascript:
var counter = 0;
function moreFields() {
counter++;
var newFields = document.getElementById('readroot').cloneNode(true);
newFields.id = '';
newFields.style.display = 'block';
var newField = newFields.childNodes;
for (var i=0;i<newField.length;i++) {
var theName = newField[i].name
if (theName)
newField[i].name = theName + counter;
}
var insertHere = document.getElementById('writeroot');
insertHere.parentNode.insertBefore(newFields,insertHere);
}
我意識到,字段名實際上是這樣的:「數據[學生] [0] [年齡]」,所以我相應增加了「數據」到行:「數據[學生]:[ 「+ counter +」] [「+ theName +」]「。但它仍然不起作用。 –
如果答案有幫助,您可以將其作爲正確的答案。 – sugunan
我是否正確地說,var theName包含整個字段名稱,因爲它從子節點獲取整個字符串?所以如果我們追加:「data [Student] [」+ counter +「] [」+ theName +「]」theName將包含整個字符串是這樣的?:data [Student] [0] [data [Student] [0] [年齡]] –