我遇到了一个问题,我正在使用的表单中的一个输入字段只应在特定条件下显示。我选择使用jQuery的
dialog()
方法来显示它。但是,在调用dialog()
方法后,对jQuery的serialize()
方法进行任何后续调用都会从生成的字符串中省略该输入字段。我怀疑这可能是由于dialog()
从表单中删除了该元素或其他类似情况导致的,但我找不到解决方法。
以下是重现问题所需的HTML和JS:
HTML代码:
<form id="form">
<div id="dialog" style="display: none;">
<input type="text" name="foo" value="bar" />
</div>
<!-- Other form inputs here -->
</form>
JS:
alert($('#form').serialize()); // "foo=bar"
$('#dialog').dialog({
buttons: {
OK: function() {
alert($('#form').serialize()); // Should be "foo=bar", but is "" instead?
$(this).dialog('close');
alert($('#form').serialize()); // Still "".
setTimeout(function() {
alert($('#form').serialize()); // Still "".
}, 0);
}
}
});
编辑:
表单中还有其他不应该显示在对话框中的输入内容,所以将form
标签放置在对话框div
中对我来说不是一个选项。
var myForm = $('#form').serialize();
的代码,并在OK
中使用它? - dotoree