在jquery中克隆时,单选按钮值将被删除

时间:2016-12-27 09:37:52

标签: jquery cloning

我想克隆一个包含文本框和单选按钮的表(不是表Row)。

更具体地说,我想克隆没有文本框值的整个表,但是使用单选按钮值。

此处,克隆时会删除文本框和单选按钮值。我怎样才能获得所需的行为?

这是我的代码:



<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>
&#13;
&#13;
&#13;

使用Javascript:

&#13;
&#13;
 <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>
&#13;
&#13;
&#13;

2 个答案:

答案 0 :(得分:0)

这是因为克隆时通过以下方式取消选中,

 if (this.type=='radio') {
        this.checked = false;
 }

答案 1 :(得分:0)

使用val('')

在此行代码中清除文本输入
$("#tablePreviousHistory").clone(true).attr('id', 'tablePreviousHistory' + k).find("input").val('').each(function () {

如果您将此行替换为下面这一行,则它们将不再清除。

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