如何在不保留字段值的情况下克隆以下html?
<form method=POST action="/url">
<div class="form-group" data-answer>
<div class="pull-left"><label><input type="checkbox" name="answer[1][is_correct]" value="true"> Correct Answer</label></div>
<div class="pull-right">
<a href="#" data-remove><span class="glyphicon glyphicon-remove"></span></a>
</div>
<input type="text" class="form-control" name="answer[1][body]" placeholder="Possible answer">
</div>
<div class="form-group" data-answer>
<div class="pull-left"><label><input type="checkbox" name="answer[2][is_correct]" value="true"> Correct Answer</label></div>
<div class="pull-right">
<a href="#" data-remove><span class="glyphicon glyphicon-remove"></span></a>
</div>
<input type="text" class="form-control" name="answer[2][body]" placeholder="Possible answer">
</div>
. . .
<button type="submit">Submit</button>
</form>
我在这里只能看到3种可能的选择。但是,所有这些都存在重大缺陷:
.clone()
.form-field
正常并重置字段值。 .form-group
中添加了更多字段,则需要单独清除它们的值。.form-group
作为模板。 answer[1][body]
。克隆最后一个.form-group
并将值增加1很方便。克隆模板.form-group
将缺乏这种灵活性。$.parseHTML($('.form-group').html())
不返回有效的JQuery对象,我需要使用.find()
和其他方法。这个问题的有效优雅解决方案是什么?
答案 0 :(得分:1)
试试这段代码:
$("button").click(function(){
var t = $("form").clone().appendTo("#clonedForm");
$(t).find("input[type=checkbox],input[type=text], textarea").removeAttr("checked").val('');
});