私は最大4つのdiv(それぞれが入力と範囲を含む)とそれらを削除する機能をユーザが生成できるようにスクリプトを設定しようとしています。divを生成/削除する際に#idの競合が発生する
var i = 1;
$(".submit-source .add-source").click(function() {
\t i++;
\t source = jQuery('<div id="source-wrap-' + i + '" class="source-wrap" ><input name="source-' + i + '" type="text"/><span class="remove-source">remove</span></div>');
\t source.insertAfter(".submit-source .source-wrap:last");
\t \t \t \t
\t if (i == 4) {
\t \t $(".submit-source .add-source").hide();
\t }
\t else {
\t \t $(".submit-source .add-source").show();
\t }
});
$(document).on("click", ".submit-source .remove-source", function() {
\t i--;
\t $(this).parent().remove();
\t \t \t \t
\t if (i == 4) {
\t \t $(".submit-source .add-source").hide();
\t }
\t else {
\t \t $(".submit-source .add-source").show();
\t }
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="submit-source">
\t <span>Add up to 4 different sources.</span>
\t <div id="source-wrap-1" class="source-wrap" >
\t \t <input name="source-1" type="text"/>
\t </div>
\t <span class="add-source">add input</span>
</div>
私が午前問題は、4つのdivタグが生成され、ユーザは、第二または第三1を削除し、新しいものを生成している場合、たとえば、彼が2で終わる、ということです同じIDを持つdiv(これらのdiv内の入力名も同じです)。
スクリプトを改善して、生成された入力が以前の入力が存在するかどうかを確認するにはどうすればよいですか?たとえば、このソースコードがすでに存在する場合は新しい#source-wrap-4を生成しませんが、このdivが存在しないか削除されている場合は#source-wrap-3を生成します。
#source-wrap-4(および入力名はsource-4)を過ぎたくないので、データを取得するときに簡単に入力を処理できます。
ありがとうございました!
は、なぜあなたはそれらを与える必要が全くIDSのですか?要素を配列に保持するだけです。 – Bergi
これは主により明確になっていますが、実際には必要ありません。それでも、これらのdiv内の入力には異なる名前が必要であるため、これを解決する必要があります – eloism
可能な要素が有限であるため、すべてを生成せず、順次IDで非表示にしてユーザはそれらを「削除する」および「追加する」。それらを非表示にすると、フォームを非表示にすることもできます。 –