gpt4 book ai didi

javascript - JQuery UI 对话框模式表单在 AJAX 应用程序中缓存旧值

转载 作者:可可西里 更新时间:2023-11-01 02:06:02 25 4
gpt4 key购买 nike

我在使用 JQuery UI 的模式对话框中使用表单时感到非常头疼。当用户单击链接时显示该对话框。第一次打开表格时,它工作正常;表单被提交到服务器,包含的页面通过 AJAX 更新,对话框关闭。然而,随后尝试使用该表格时,问题就开始了。

在第二次尝试使用它时,尽管页面内容已更新,但仍使用上一次 提交的值提交表单。即使我导航到应用程序中的另一个屏幕然后返回,也会发生这种情况。每次提交后重新呈现的页面内容包括构成对话框的表单,因此提交的“旧”值甚至不再存在在页面标记中。 JQuery UI 以某种方式“记住”了它们。我不知道如何解决这种行为,这让我发疯。

如何让 JQuery 对话框在更新内容时忘记以前的表单提交?

我将 JQuery UI 1.7.2 与 JQuery 1.3.2 一起使用,应用程序是在 ASP.NET MVC 3 中构建的(尽管我认为服务器端没有任何问题)。我宁愿不必更新我正在使用的 JQuery 版本。

相关的 JavaScript:

//shows dialog containing form; triggered by clicking a hyperlink
function showForm() {
$('#divForm').dialog({
modal: true,
draggable: false,
resizable: false,
title: summary,
width: 400
});
}

//submits the form; triggered by clicking 'Save' button from the dialog
function save() {
var postData = $('#frmAddNew').serialize();

$.post('/Item/Save', postData, function (response, status) {
$('#divForm').dialog('destroy');
$('#divContent').html(response); //response mark up contains a new 'divForm' element
}, 'html');
}
}

这是表单的标记,它包含 div。这是使用 txtDate、txtTime 和 hdnId 的新值提交后重新加载到页面中的内容(一个 PartialViewResult)。这些是保留其旧值的输入。

<div id="divForm" class="admPanel hidden">
<form id="frmAddNew" action="/Item/Save" method="post">
<input id="hdnId" name="UserId" type="hidden" value="3">
<div>
<label for="txtDate">Admin Date:</label>
<input id="txtDate" name="AdministrationDateTime" type="text" value="8 Jun 2011">
<br>
<label for="txtTime">Admin Time:</label>
<input id="txtTime" name="AdministrationDateTime.Time" type="text" value="21:45">
<br>
<label>Outcome:</label>
<input id="txtOutcome" name="AdministrationOutcome" type="text" value="">
<br>
</div>
</form>
<p>
<input class="buttonNormal" id="btnSave" onclick="save();" type="button" value="Save">
</p>

divContent 是一个空的 div,位于母版页中并与内容异步加载。

最佳答案

根据我从您的代码中可以解释的内容,您实际上并没有删除以前的表格。您只是从他们那里删除对话框。

方法描述如下:

Remove the dialog functionality completely. This will return the element back to its pre-init state.

意思是它还在那里。

试试这个(注意 $('#divForm').remove();):

 $.post('/Item/Save', postData, function (response, status) {
$('#divForm').remove();
$('#divContent').html(response); //response mark up contains a new 'divForm' element
}, 'html');
}

关于javascript - JQuery UI 对话框模式表单在 AJAX 应用程序中缓存旧值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6284838/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com