Я использую функцию JQuery клонировать DIV, который содержит набор входных элементов:Изменить ярлык для атрибута
<div class="history-form-fields">
<div class="row">
<label for="History_0_type">Type</label>
<select name="History[0][type]" id="History_0_type">
<option value="">Select</option>
</select>
</div>
<div class="row">
<label for="History_0_name">Name</label>
<input type="text" name="History[0][name]" id="History_0_name" />
</div>
<div class="row">
<label for="History_0_year">Year</label>
<select name="History[0][year]" id="History_0_year">
<option value="">Select</option>
</select>
</div>
</div>
<input id="addAnother" type="button" value="Add Another" />
Когда DIV получает клонированные тег входных элементов NAME и ID должны быть изменены так что мы можем идентифицировать данные в сценарии на стороне сервера.
У меня есть следующий код, который клонирует DIV и модифицирует ВХОД и ВЫБРАТЬ метки:
var counter = 0;
$('#addAnother').click(function(){
var divCloned = $('.history-form-fields:first').clone();
divCloned.insertAfter('.history-form-fields:last');
initNewInputs(divCloned.children('.row'), ++counter);
});
function initNewInputs(divs, idNumber)
{
var inputs = divs.children('input, select').get(); // find all the INPUT and SELECT tags
for(var i in inputs)
{
inputs[i].id = inputs[i].id.replace(/\d+/, idNumber);
inputs[i].name = inputs[i].name.replace(/\d+/, idNumber);
}
}
Однако у меня возникли проблемы, изменяющий LABEL атрибутов. Кто-нибудь знает, как это сделать?
Cheers mate. Можно ли заменить «входы» для цикла так? – GSTAR
@GSTAR: Да, это возможно. Однако вам понадобятся два вызова 'attr'. Возможно, вы захотите написать 'var replacer = function (index, old) {return old.replace (/ \ d + /, idNumber); }; 'и передать это. – SLaks
Привет, SLaks - еще один вопрос - во время изменения атрибута FOR я также хочу добавить атрибут 'class' к тому же тегу метки (используя функцию attr()) - любой способ интегрировать это в этот новый код? – GSTAR