在我的页面上,我有一个像这样的虚拟表格:
<div id="form_container">
<form id="new_form" action="...">
<input type="hidden" id="hidden_field" name=...>
<input type="text" id="text_field" name=...>
<... submit button ...>
</form>
</div>
输入值最初为空白。
我需要在我的页面上不时地在字段中使用不同的值重新创建此表单。我的工作:首先我从DOM中分离表单容器并将其存储在变量中:
var dummyForm = $('#form_container').detach();
然后,当我需要弹出的表单时,我会执行某些功能:
var newForm = dummyForm .clone()
$('#hidden_field', newForm).val(dataForHidden);
$('#text_field', newForm).val(dataForText);
然后通过将newForm
附加到页面上的某个元素来使newForm.html()
可见。
但是当我检查输入的结果html(或者我只是在JS调试器中检查 <input type="hidden" id="hidden_field" name=... value="xxx">
<input type="text" id="text_field" name=...>
)时,它看起来像这样:
$('#text_field', newForm).attr('value', dataForText);
即。隐藏字段的值已设置,但对于文本字段,它将丢失。
我的问题是: 1)这是一个错误,已知问题,设计特征,还是我做错了什么? 2)如何解决?
当表单已经附加到DOM时,我可以想到填写字段值的解决方案,但在我的情况下,这可能是一个问题,因为它通过一些回调链被另一个库附加到DOM。
P.S。我能够通过val()
解决此问题,但仍然想知道为什么{{1}}适用于隐藏字段而不适用于其他类型。