Значения переключателей удаляются при клонировании в jquery

Я хочу клонировать таблицу (не строку таблицы) с текстовыми полями и переключателями в ней.

В частности, я хочу клонировать всю таблицу без значений текстового поля, но со значениями переключателя.

Здесь значения текстового поля и переключателя удаляются при клонировании. Как я могу получить желаемое поведение?

Вот мой код:

<div>
<table id="tablePreviousHistory">
    <tbody>
        <tr>
            <td>
                <input id="pCountry" name="pCountry" value="" type="text">
            </td>
            <td>
                <input id="pvisatype" name="pvisatype" value="" type="text">
            </td>
            <td>
                <input id="pstartdate" name="pstartdate" value="" type="text">
            </td>
            <td>
                <input id="pStatus" name="pStatus" value="Yes" type="radio">
                Yes<br>
                <input id="pStatus" name="pStatus" value="No" type="radio">
                No
            </td>
        </tr>
    </tbody>
</table>
</div>

Javascript:

 <script>
$("#tablePreviousHistory").clone(true).attr('id', 'tablePreviousHistory' + k).find("input").val('').each(function () {
                if (this.type=='radio') {
                    this.checked = false;
                }
                $(this).attr({
                    'id': function (_, id) { return id + k },
                    'name': function (_, name) { return name + k }
                });
            }).end().insertAfter("#tablePreviousHistory" + (k != 1 ? (k - 1).toString() : ''));
</script>


person Rohil Patel    schedule 27.12.2016    source источник


Ответы (2)


Это связано с тем, что во время клонирования он не проверяется следующим образом:

 if (this.type=='radio') {
        this.checked = false;
 }
person ScanQR    schedule 27.12.2016
comment
Привет, спасибо за повтор. - person Rohil Patel; 27.12.2016
comment
Привет, спасибо за ваш ответ. Я попытался удалить строку в соответствии с вашим предложением, но все равно не работает! - person Rohil Patel; 28.12.2016

Текстовые вводы очищаются в этой строке кода с помощью val('')

$("#tablePreviousHistory").clone(true).attr('id', 'tablePreviousHistory' + k).find("input").val('').each(function () {

Если вы замените эту строку этой ниже, они больше не должны очищаться.

$("#tablePreviousHistory").clone(true).attr('id', 'tablePreviousHistory' + k).find("input").each(function () {
person dading84    schedule 27.12.2016
comment
Привет, спасибо за ваш ответ, - person Rohil Patel; 27.12.2016
comment
Привет, спасибо за ваш ответ. Я пробовал по вашему предложению, все еще не работает !! - person Rohil Patel; 28.12.2016