JQuery以分离的形式填写输入(隐藏填充,但其他不是)

时间:2012-04-30 10:40:20

标签: jquery forms

在我的页面上,我有一个像这样的虚拟表格:

<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}}适用于隐藏字段而不适用于其他类型。

1 个答案:

答案 0 :(得分:1)

您可以尝试在jQuery中使用attr http://api.jquery.com/attr/