表单元素未在Opencart模块中进行POST

时间:2014-06-27 13:12:41

标签: php jquery post opencart

我正在编写自己的模块,用于基础虚拟模块。我已经完成了很大一部分任务,但是我需要传递一些额外的设置。出于这个原因,我添加了两个新的'输入'您可以看到元素:

<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。

有关导致问题的原因的任何想法?任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

好的,我发现了问题。这是因为.dialog以一种方式重新排列DOM树,这两个元素被认为是表单的更多部分,所以它们没有用它进行POST。一个可能的解决方案(也许是一个hack?)是在表单内的隐藏输入中传递对话框字段值,因此它们将始终包含在POST数据中。

如果你有比这更好的解决方案,请提供帮助!