2015-08-09 47 views
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

你有一個像如下,以取代這一行。

此致:

newField[i].name = theName + counter; 

newField[i].name = "[Student][" + counter + "][" + theName + "]"; 

我做了一個工作示例頁面你的腳本。檢查以下鏈接。

http://sugunan.net/demo/extend_form.php

+0

我意識到,字段名實際上是這樣的:「數據[學生] [0] [年齡]」,所以我相應增加了「數據」到行:「數據[學生]:[ 「+ counter +」] [「+ theName +」]「。但它仍然不起作用。 –

+0

如果答案有幫助,您可以將其作爲正確的答案。 – sugunan

+1

我是否正確地說,var theName包含整個字段名稱,因爲它從子節點獲取整個字符串?所以如果我們追加:「data [Student] [」+ counter +「] [」+ theName +「]」theName將包含整個字符串是這樣的?:data [Student] [0] [data [Student] [0] [年齡]] –

相關問題