jQuery UI对话框表单,不发送正确的变量

时间:2010-12-20 18:37:30

标签: jquery-ui jquery

我正在使用jQuery加载客户信息页面。有一个客户列表旁边有一个链接:

<a href="#" onclick="load_customer(<?php echo $c->id; ?>);return false;">View</a>

触发此功能:

function load_customer(id) {
  $("#dashboard").load('get_info/' + id);
}

完美无缺。在我正在加载的页面上,我有一个用于添加新信息的jQuery UI模式对话框表单。

<div id="addinfo">
  <form><input type="hidden" name="customer_id" value="<?php echo $c->id; ?>" /></form>
</div>

我的javascript:

  $("#addinfobutton").click(function(){
            $("#addinfo").dialog("open");
            return false;
   });
   $("#addinfo").dialog({
            autoOpen:false,
            width:400,
            height:550,
            modal: true
   });

当您第一次选择客户时,它会正确填充隐藏字段,但即使在选择其他客户后也会保持不变。

我认为通过加载新的客户页面,表单也会重置......但显然它正在某处存储/缓存。如果我在页面的任何其他地方回显ID,它会正确显示...只是不在“addinfo”div中。

任何帮助/建议将不胜感激!谢谢!

3 个答案:

答案 0 :(得分:1)

JQuery对话框在您打开它们时不会为您重新加载内容。当打开对话框时,我倾向于用AJAX调用替换对话框所在的div的内容(或在其中调整一些值)。

如果你想要一个隐藏字段,那么我不会把它放在对话框中,你应该能够从对话框外部检索它。

答案 1 :(得分:0)

经过一些研究后,似乎对话框在被调用后被缓存在客户端。因此,为了解决这个问题,我只是将customerId添加到popup div的ID名称的末尾...所以每个客户页面都有一个唯一的对话框ID。

但是,如果它正在缓存每个对话框,那么如果打开相当多的话会不会有性能损失?如何在不进行整页刷新的情况下清除它们?

答案 2 :(得分:0)

我想如果更新了#addinfo div,它应该捕获新内容......无论如何,这会在关闭它之后破坏对话框,以确保将创建一个新实例:

$("#addinfobutton").click(function(){
    openDialog('#addinfo');
    return false;
});
function openDialog(elm) {
    $(elm).dialog({
        autoOpen:true,
        width:400,
        height:550,
        modal: true,
        close: function() {
            $(this).dialog('destroy');
        }
    });
}