我正在使用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中。
任何帮助/建议将不胜感激!谢谢!
答案 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');
}
});
}