2011-12-17 16 views
0

多変量のバンドメンバーが必要なフォームでは、ボタンに次のコードを使用して入力を複製しています。jQueryでクローン化する際の問題

HTMLのスニペットはこれです:

<div id="input1" style="margin-bottom:4px;" class="clonedInput"> 
    <label for="band_member">Band Member: </label> 
    <input type="text" name="name1" id="name1" /> 
</div> 
<div> 
    <input type="button" id="btnAdd" value=" add another member " /> 
</div> 

そして、このjQueryのドキュメントレディ機能である:

$('#btnAdd').click(function() { 
var num = $('.clonedInput').length; 
var newNum = new Number(num + 1); 
var newElem = $('#input' + num).clone().attr('id', 'input' + newNum); 
newElem.children(':first').attr('val', '').attr('id', 'name' + newNum).attr('name', 'name' + newNum); 
$('#input' + num).after(newElem); 
$("#band_member_count").val(newNum);    
}); // end btnAdd click 

フォームが送信されると、追加の入力が提出されていません最後のエントリは最初の入力の値になり、新しく追加された各入力の値はコードの示すようにクリアされません。

私はこの点で大きな助けになります。事前に

おかげで、 ジョン

答えて

3

私はあなたではなく入力より、ラベルにID =「名前」+ NUMを追加すると、各入力は、したがって、持っているので、それが機能していない理由はあると思います同じ正確なID。

変更入力セレクタに第1選択:

newElem.children(':first').attr('val', '').attr('id', 'name' + newNum).attr('name', 'name' + newNum); 

は次のようになります。

newElem.find('input').attr('id', 'name' + newNum).attr('name', 'name' + newNum).val(""); 
+0

あなたが言ったように私はそれを変えたが、それはうまくいきませんでした。しかし、あなたのロジックに従って、私はこれを次のように変更しました:newElem.find( 'input').attr( 'val'、 '').attr( 'id'、 'name' + newNum).attr( 'name'、 '名前 '+ newNum);すべての値(感謝!!!)を提出しますが、値はまだクローンではクリアされません。思考? – jgravois

+0

@jgravoisこれを次のように変更します。newElem.find( 'input')。attr( 'id'、 'name' + newNum).attr( 'name'、 'name' + newNum).val( "");この変更を反映するために私の答えも更新しました。 – flynfish

+0

完了!ありがとう! – jgravois

関連する問題