Проблема в использовании JQuery's clone () для текстового поля - PullRequest
3 голосов
/ 30 января 2011

Это то, что мне нужно клонировать:

<p id="ex">
<label for="c2">Enter your Choice</label>
<br>
<input type="text" name="c2_r" id="c2" value="" />
<br> 
</p>

Я клонирую это этим утверждением:

$("#def").append($("#ex").clone());

Как я вижу, он клонирует элемент p. Но я на самом деле хочу, чтобы он клонировал тег p и установил значение текстового поля внутри него на "". Может кто-нибудь объяснить мне, что делать? Кроме того, мне нужно установить идентификатор текстового поля внутри клонированного элемента, чтобы отличаться от оригинала. Пожалуйста помоги. Спасибо

Ответы [ 2 ]

1 голос
/ 30 января 2011
// first we grab the clone. We also want to change the <p>'s id, as it's
// not valid to have two elements within a page with the same ID.
$('#ex').clone().attr({
  id: 'newpid' // paragraph's ID
// next, we alter the input inside it (change ID, clear value).
}).find('input').attr({
  value: '',
  id: 'newid' // <input>'s ID
// call end to stop the ".find", then add it to the #def element
}).end().appendTo('#def');

Рабочий пример: http://www.jsfiddle.net/F4rRQ/1/

0 голосов
/ 30 января 2011

Вот, пожалуйста ...

var clonedP = $('#ex').clone();

clonedP
 .attr({ id: 'new_id' })
 .find('input')
  .attr({id: 'new_input_id'})
  .val('');

$('#def').append(clonedP);

Я поместил код на место, чтобы изменить их атрибут id, потому что id должен быть уникальным для каждой страницы.

Вам также потребуется изменить атрибут name (т.е. разные имена для разных входных данных), если вы собираетесь читать эти данные в разумном порядке.

...