(Надеюсь, что это не получает дублируется, вторая попытка подачи на этот вопрос)построения динамических форм частей с использованием JQuery
Я работаю в форме, в которой я хотел бы дать пользователю возможность добавлять неопределенное количество контактов (имя и номер телефона). Я хочу показать только одну строку этих полей формы и позволить пользователю щелкнуть элемент, который добавит дубликаты исходной строки (пустой и, конечно, с обновленными идентификаторами для управления этими данными, когда он вернется к контроллеру (Приложение ASP.NET MVC).
Я нашел несколько примеров, которые работают с использованием версии 1.2.x библиотеки jQuery, но я не могу заставить кого-либо из них работать с 1.3.2. имеет отношение к методу $ .clone(). Когда я вызываю этот метод на селекторе/элементе, страница выполняет полное обновление, и пользователю предоставляется чистая форма.
Текущий пример, который я использовал (с http://devblog.jasonhuck.com/assets/infiniteformrows.html) выглядит так:
Стол -
<table id="tabdata">
<thead>
<tr>
<th>Row</th>
<th>Cell 1</th>
<th>Cell 2</th>
<th>Cell 3</th>
<th></th>
</tr>
</thead>
<tbody>
<tr>
<td><a id="addnew" href="">Add</a></td>
<td><input id="n0_1" name="n0_1" type="text" /></td>
<td><input id="n0_2" name="n0_2" type="text" /></td>
<td><input id="n0_3" name="n0_3" type="text" /></td>
<td></td>
</tr>
</tbody>
</table>
Сценарий -
<script type="text/javascript">
$(function() {
var newRowNum = 0;
$('#addnew').click(function() {
newRowNum++;
var addRow = $(this).parent().parent();
var newRow = addRow.clone();
$('input', addRow).val('');
$('td:first-child', newRow).html(newRowNum);
$('td:last-child', newRow).html('<a href="" class="remove">Remove<\/a>');
$('input', newRow).each(function(i) {
var newID = newRowNum + '_' + i;
$(this).attr('id', newID).attr('name', newID);
});
addRow.before(newRow);
$('a.remove', newRow).click(function() {
$(this).parent().parent().remove();
return false;
});
return false;
});
});
</script>
Когда метод гласит "переменная NewRow = addRow.clone();", страница перезагружается. Не знаю, почему, но запустив скрипт против более ранней версии jQuery, он работает отлично. Я бы предпочел не возвращаться в версии, если я могу помочь.
Любые мысли? Есть ли лучший способ сделать это? Это должно быть довольно просто, но оказалось более утомительным, чем я хочу, чтобы это была библиотека, которую я выбрал.
Я тестирую сценарий в FF 3. Ссылка на старые скрипты работает в том же браузере. Приложение находится в MVC, но я действительно не думаю, что это должно иметь значение. Установлен еще один плагин jQuery. Я попытаюсь удалить это, чтобы увидеть, есть ли там конфликт. – nkirkes
Weird ... Я просто перезагрузил VS и запустил страницу, чтобы проверить поведение, которое я видел, и он работает нормально. Я, должно быть, что-то ругался и нуждался в чистом старте. Итак, не решение обязательно, но проверка других конфликтов jQuery была хорошим советом для будущего в любом случае. Благодаря! – nkirkes