ユーザーが異なるオプションを持つHTMLフォームを作成中です。私は無限に、名前のように増分で新しい入力オペレーション入力フィールドを生成するボタンを作成しようとしています。 最初に生成された入力の名前はinput1でなければなりません。次はinput2という名前で続きます。ここでクリック時にJavaScriptが新しい入力フィールドを生成する
は、視覚的な例です。これが達成することができますどのようにhttps://webmshare.com/ZBvw0
?
ユーザーが異なるオプションを持つHTMLフォームを作成中です。私は無限に、名前のように増分で新しい入力オペレーション入力フィールドを生成するボタンを作成しようとしています。 最初に生成された入力の名前はinput1でなければなりません。次はinput2という名前で続きます。ここでクリック時にJavaScriptが新しい入力フィールドを生成する
は、視覚的な例です。これが達成することができますどのようにhttps://webmshare.com/ZBvw0
?
フォーム要素を動的に作成し、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>
"var template"は何をすべきか見ていませんか? –
それはまだ私が探していたものではありませんか?私が質問したように、私は入力だけを作成するのではなく、一連の入力を作成する必要があります。ジョシュアが提供したような答えは、それが前の入力データを削除するという事実を除いて完璧です。 –
@SkinFlipNetworkの関数addInputで、単に 'document.createElement()'を使って任意の要素を追加することができます(任意のタイプのDOM要素を作成できます) – GibboK
jqueryを使用してlastアイテムの名前を取得できます。
その後、あなたはjavascript string replaceメソッドを使用して、最後の項目の数を取得するために、「が「は、入力」」を置き換えることができます。
次に、1だけ増分してください.1を追加する前にparse it as an integerにする必要があります。
はその後インクリメント数で、あなたのコンテナに新しい入力フィールドとappend itを作成します。
をチェックしてください。この
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++;
}
をお試しください10
このコードに問題があります。新しい入力要素を追加すると、前に入力したすべての値が破棄されます。 – GibboK
これは修正できますか?これ以外の理由で、これは正確に私が必要としているものです –
@SkinFlipNetworkこのコードは実際には機能しません。各入力の値を取得し、それらをいくつかの場所に格納し、input.valueを含むHTMLテンプレートを使用してinnerHTMLを再生成する必要があります。しかし、正直言って。どうしてこのようにしなければならないのか分かりません。代わりに、 'document.createElement(" input ");を使ったより簡単なアプローチを使用します。これは明確で、仕事を適切に行います。特別な要件はありますか? – GibboK
ようこそ!これまでに何を試しましたか? – GibboK