这是一个非常简单的脚本来说明我的观点。我想我只是做错了什么。 http://jsfiddle.net/9qx2q/2/
HTML
<form id='myForm'>
<div class="panelClass">
Here's my jquery panel
</div>
</form>
和脚本
//when the div is dialog'ed it's relocated to be a child of body?
$('.panelClass').dialog({
//appendTo : '#myForm', // uncomment to see that this does not move the panel
create : function(e, ui) {
//$(this).dialog('widget').appendTo('#myForm'); //uncomment to see that this DOES move the panel
}
});
输出
<body>
<form id="myForm"></form>
<div class="ui-dialog ui-widget ui-widget-content ui-corner-all ui-draggable ui-
resizable" style="outline: 0px; z-index: 1003; position: absolute; height: auto; width: 300px; top: 235px; left: 104px; display: block;" tabindex="-1" role="dialog" aria-labelledby="ui-id-1"><div class="ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix"><span id="ui-id-1" class="ui-dialog-title"> </span><a href="#" class="ui-dialog-titlebar-close ui-corner-all" role="button"><span class="ui-icon ui-icon-closethick">close</span></a></div><div class="panelClass ui-dialog-content ui-widget-content" style="width: auto; min-height: 82px; height: auto;" scrolltop="0" scrollleft="0">
Here's my jquery panel
</div><div class="ui-resizable-handle ui-resizable-n" style="z-index: 1000;"></div><div class="ui-resizable-handle ui-resizable-e" style="z-index: 1000;"></div><div class="ui-resizable-handle ui-resizable-s" style="z-index: 1000;"></div><div class="ui-resizable-handle ui-resizable-w" style="z-index: 1000;"></div><div class="ui-resizable-handle ui-resizable-se ui-icon ui-icon-gripsmall-diagonal-se ui-icon-grip-diagonal-se" style="z-index: 1000;"></div><div class="ui-resizable-handle ui-resizable-sw" style="z-index: 1000;"></div><div class="ui-resizable-handle ui-resizable-ne" style="z-index: 1000;"></div><div class="ui-resizable-handle ui-resizable-nw" style="z-index: 1000;"></div></div>
</body>
从上面的示例中可以看出,表单元素现在为空,并且在表单之后创建了面板。在面板上调用.dialog()时,面板将移动到<body>
的末尾。
基本上就是这种情况。 我在表单中有一个面板。这个面板需要在弹出的形式内,它将具有需要在表单上保留的输入元素。 (有时我们会弹出这些面板以让用户提交更多信息等)。
虽然我确实有一个可行的解决方案,即通过更新创建方法,我真的不认为这应该是首先要移动元素......除非......我只是做错了。
任何建议都会受到最高的赞赏。
由于
答案 0 :(得分:2)
根据文档appendTo
将添加到jQuery UI 1.10.0 http://api.jqueryui.com/dialog/#option-appendTo
您所面对的是jQuery UI对话框的默认行为,它将对话框附加在正文http://bugs.jqueryui.com/ticket/7948的末尾,因此我认为您的代码不存在问题。
目前唯一的解决方法是您现在在create
或open
个活动中做些什么。
如果您愿意,也可以查看我的答案:Append jQuery UI dialog to its parent
答案 1 :(得分:0)
假设您使用的是HTML5,则可以设置form
属性,将<input>
与表单关联,而不将该元素放在<form>
标记内:
<input type="text" form="myForm">