Ах, теперь я понимаю проблему, основываясь на приведенных выше комментариях. Извините, если мои начальные вопросы смутили вас. :)
Я думаю, что вы на правильном пути - у меня сработало следующее:
HTML
<div id="accordion">
<h3 class="acc-header"><a href="#">First header</a></h3>
<div>
<fieldset id="input-fields">
<label for="defaultStudyEvent_GroupName">Group Name</label>
<input id="defaultStudyEvent_TimePoints" name="defaultStudyEvent.TimePoints" type="text" value="" />
</fieldset>
</div>
<h3 class="acc-header"><a href="#">Second header</a></h3>
<div>
</div>
<!-- more divs can be added -->
</div>
JQuery:
$(document).ready(function () {
$('#accordion').accordion();
$('.acc-header').click(moveFields);
function moveFields() {
$(this).next().append($('#input-fields'));
}
});
Обратите внимание, что я добавил свой собственный класс для .acc-header. Хотя вы могли бы использовать встроенные классы пользовательского интерфейса jQuery, использование собственного гарантирует, что оно не сломается, если новая версия пользовательского интерфейса изменит наименование класса (не очень вероятно, но все же).
Приведенное выше решение гарантирует, что вы когда-либо будете использовать только один набор полей ввода, поэтому вы не получите никаких повторяющихся почтовых данных. Отличная особенность .append () в том, что он перемещает то, что вы добавляете, поэтому вам не нужно ничего удалять потом.
Что касается "правильного подхода", я не могу сказать - но, кажется, это самый чистый способ сделать это, если вы спросите меня. Другой возможный подход - создать одинаковые поля для всех панелей аккордеона в представлении и каким-то образом отключить все, кроме тех, что находятся на активной панели. Однако для этого потребуется больше JavaScript.