リンクをクリックしてフォームフィールドを複製できるこのフォームがあります。また、各クローンの上部に、チェックボックスを非表示にしたり表示したりする場合のラジオボタンがあります。なぜ最初の反復でそれを実行できるのか、各クローンでそれを機能させる方法を理解できません。
私のhtmlは次のようになります
<tr> // if the first radio button is selected, the checkbox appears and disappears on selecting 2nd <td width="250px"><span style="color: #cc0000;">*</span> Please check the costs that apply:</td> <td><input id="Cost_1" type="radio" value="15" name="Costs"/> First Cost: $15 <br/> <input id="Cost_2" type="radio" value="10" name="Costs"/> Second cost: $10 <br/> <tr id="special_offers"> <td> <input type="checkbox" value="5" name="special_offers"/> <span id="optional_span">Special Offers: $5
<tr> <td> First name:</td> <td><input name="first_name_id_1" type="text" id="first_name_id_1" size="15" class="required"></td> </tr> <tr> <td> Last name:</td> <td><input name="last_name_id_1" type="text" id="last_name_id_1" size="15" ></td> </tr> <tr> </tbody> <tr> <td><a href="#" onClick="addFormField(); return false;">Register additional attendee</a></td> </tr> <tr>
そして私の機能:
function addFormField() { var currentCount = $('.multiplerows').length; var newCount = currentCount+1; var lastRepeatingGroup = $('.multiplerows:last') var newSection = lastRepeatingGroup.clone(); newSection.find('input').val(''); //clears the text fields// $('input[type=radio]',newSection).removeAttr('checked'); $('input[type=checkbox]',newSection).removeAttr('checked'); newSection.insertAfter(lastRepeatingGroup); newSection.find("input").each(function (index, input) { input.id = input.id.replace("_" + currentCount, "_" + newCount); input.name = input.name.replace("_" + currentCount, "_" + newCount); }); newSection.find("label").each(function (index, label) { var l = $(label); l.attr('for', l.attr('for').replace("_" + currentCount, "_" + newCount)); }); return false; }; $("input[name='Costs']").click(function() { if(document.getElementById('Cost_1').checked) { $("#special_offers").show(); } else { $("#special_offers").hide(); ; } });
何らかの理由でフィドルが機能しませんが、このフォームの要素の複製に問題はありません。ユーザーが2番目のラジオボタンをクリックするとチェックボックスがグレーアウトし、毎回そのオプションを利用できるようにすることが問題ですユーザーがクリックして新しい出席者を登録します。うまくいけば、フィドルはあなたにいくつかのアイデアを与えるかもしれません. http://jsfiddle.net/qnAHq/7/