Я столкнулся с проблемой, когда поле ввода в форме, которую я использую, должно отображаться только при определенных условиях. Я решил отобразить его с помощью метода 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);
}
}
});
Edit:
В форме есть несколько других входных данных, которые не должны отображаться в диалоговом окне, поэтому размещение тегов form
в диалоговом окне div
не вариант для меня.