Mic*_*rey 2 forms jquery jquery-ui
我有一个小表单,其中包含一个jQuery UI对话框,以便在选中特定复选框时询问其他信息.该对话框打开,包含2个附加复选框.
问题是当提交表单时,对话框中的2个复选框不会与表单的其余部分一起提交.从jQuery呈现对话框时我可以看出,它实际上将它呈现在结束表单标记之外,导致复选框不再是表单的一部分.
我尝试过这样的事情:
$("#dialog-form").parent().appendTo($("#ContactSpeakerForm:first"));
Run Code Online (Sandbox Code Playgroud)
但还没有想出一个好的解决方案.
这是我的js:
$(function() {
var eventReg = $('#dialog-form').dialog({
autoOpen: false,
modal: true,
buttons: {
Ok: function() {
$(this).dialog("close");
}
}
});
$('#Confirmed').click(function() {
if($('#Confirmed').attr('checked')) {
eventReg.dialog("open");
}
});
});
Run Code Online (Sandbox Code Playgroud)
这是html:
<form id="ContactSpeakerForm" name="ContactSpeakerForm" action="/contacts/add-contact-speaker/id/3420" method="post">
<input type="hidden" name="ID" value="" id="ID">
<input type="hidden" name="Contact_ID" value="3420" id="Contact_ID">
<div class="page_panel_table">
<table>
<tbody>
<tr>
<td align="right" class="form_label">Confirmed:</td>
<td>
<input type="checkbox" name="Confirmed" id="Confirmed" value="1">
</td>
</tr>
<tr>
<td><input type="submit" name="submit" id="submit" value="Save"></td>
</tr>
</tbody>
</table>
</div>
<div id="dialog-form" style="display:none;" title="Speaker Event Registration">
<input type="checkbox" name="RegisterForEvent" id="RegisterForEvent" value="1">
<input type="checkbox" name="RegisterForDinner" id="RegisterForDinner" value="1">
</div>
</form>
Run Code Online (Sandbox Code Playgroud)
谁知道一个好的解决方案?
设置对话框后,使用:
eventReg.closest('div.ui-dialog').appendTo('#ContactSpeakerForm');
Run Code Online (Sandbox Code Playgroud)
这里有两个关键的事情.首先,在窗口小部件有机会初始化并更改标记之后运行此命令.其次,您消除了对直接父/子关系的依赖.
我知道这是一个老问题,但对于任何有相同问题的人来说,有一个更新更简单的解决方案:jQuery UI 1.10.0中引入了"appendTo"选项
http://api.jqueryui.com/dialog/#option-appendTo
$("#dialog").dialog({
appendTo: "#ContactSpeakerForm"
....
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4038 次 |
| 最近记录: |