我正在编写自己的模块,用于基础虚拟模块。我已经完成了很大一部分任务,但是我需要传递一些额外的设置。出于这个原因,我添加了两个新的'输入'您可以看到元素:
<form action="<?php echo $action; ?>" method="post" enctype="multipart/form-data" id="form">
<div id="hidset" title="Configure module" style="display:none;">
<table>
<tr><td>Apikey:</td><td><input type="text" name="my_module_apikey" value="5"/></td><tr/>
<tr><td>User ID:</td><td><input type="text" name="my_module_uid" value="6"/></td><tr/>
</table>
</div>
然后我想在对话框中打开这个div。所以我写了这个函数来做到这一点:
function dialogSettings() {
$( "#hidset" ).dialog({
height: 250,
width: 250,
modal: true,
buttons: { 'OK': function() {
$(this).dialog('close');
}
}
}); }
直到这里一切都按预期工作。
现在,如果我选择打开对话框 - 无论是更改设置还是什么也不做 - 单击其按钮关闭它并选择保存模块,这些额外的2设置不会被发布。如果我选择再次编辑模块,这次不打开对话框,瞧!正好使用硬编码值对设置进行POST。
有关导致问题的原因的任何想法?任何帮助将不胜感激。
答案 0 :(得分:1)
好的,我发现了问题。这是因为.dialog以一种方式重新排列DOM树,这两个元素被认为是表单的更多部分,所以它们没有用它进行POST。一个可能的解决方案(也许是一个hack?)是在表单内的隐藏输入中传递对话框字段值,因此它们将始终包含在POST数据中。
如果你有比这更好的解决方案,请提供帮助!