2016-08-23 34 views

回答

1

您可以通過動態創建表單元素並將它們附加到您的form元素來解決此問題。

下面是一個簡單的例子,只是爲了展示主要想法。這裏

要點是:

Document.createElement() - 它創建了一個指定的HTML元素(在這種情況下你的表單元素)。

Node.appendChild() - 將一個節點添加到指定父節點(您的表單元素)的子節點列表的末尾。

(function() { 
 
    var counter = 0; 
 
    var btn = document.getElementById('btn'); 
 
    var form = document.getElementById('form'); 
 
    var addInput = function() { 
 
    counter++; 
 
    var input = document.createElement("input"); 
 
    input.id = 'input-' + counter; 
 
    input.type = 'text'; 
 
    input.name = 'name'; 
 
    input.placeholder = 'Input number ' + counter; 
 
    form.appendChild(input); 
 
    }; 
 
    btn.addEventListener('click', function() { 
 
    addInput(); 
 
    }.bind(this)); 
 
})();
input{ 
 
    display: block; 
 
}
<form id="form" action=""> 
 
</form> 
 
<button id="btn" type="button">Click Me!</button>

+0

我不知道「var template」應該做什麼? –

+0

它仍然不是我正在尋找的東西。正如我在問題中所說的,我需要創建一組輸入,而不僅僅是一個輸入。像Joshua提供的答案將是完美的,除了它刪除了以前的輸入數據。 –

+0

@SkinFlipNetwork在函數addInput中,您可以通過簡單地使用'document.createElement()'(您可以創建任何類型的DOM元素)來添加任何元素 – GibboK

0

您可以使用jquery獲取last項目的名稱。

然後,您可以使用javascript string replace方法並用''替換'輸入'以獲取最後一個項目的編號。

然後只需增加1即可。在添加1之前,您必須先登錄parse it as an integer

然後用增加的數字創建一個新的輸入字段並將append it添加到您的容器中。

0

試試這個

HTML

<div id="demo"> 
</div> 
<input type="button" id="add" value="Add input"/> 

的Javascript

var num = 1; 
document.getElementById('add').addEventListener("click",addInput); 

function addInput(){ 
var demo = document.getElementById('demo'); 
demo.insertAdjacentHTML('beforeend','<div class="form-holder" style="width: 30%;"><a class="form-label">Billet type</a> <br><select name="ttype'+num+'"><option value="normal">Standard Billet</option><option value="add-on">Tilkøbs Billet</option></select></div><div class="form-holder" style="width: 31%; margin-left: 0.6%;"><a class="form-label">Billet navn</a> <br><input name="tname'+num+'" type="text" placeholder="F.eks. Entré Billet" style="width: 100%;" /></div><div class="form-holder" style="float: right; width: 18%; margin-left: 1%;"><a class="form-label">Antal</a> <br><input name="tquan'+num+'" type="text" placeholder="F.eks. 500" style="width: 100%;" /></div><div class="form-holder" style="float: right; width: 18%;"><a class="form-label">Pris (DKK)</a> <br><input name="tprice'+num+'" type="text" placeholder="F.eks. 100" style="width: 100%;" /></div> <br>'); 
num++; 
} 

退房jsFiddle example

+0

這個代碼有問題。在添加新的輸入元素之後,之前輸入的所有值都將被銷燬。 – GibboK

+0

可以修復嗎?因爲除此之外,這正是我需要的 –

+0

@SkinFlipNetwork,這個代碼不是真的,爲了使它工作,您必須檢索每個輸入的值,將它們存儲在某個位置,並使用包含input.value的HTML模板重新填充innerHTML。但說實話。我沒有看到爲什麼你應該這樣做,而是使用更簡單的方法,因爲使用'document.createElement(「input」);'這是清楚的,並且正確地完成它的工作。你有什麼特殊要求嗎? – GibboK

相關問題