我有一个 jQuery 对话框表单,允许用户保存笔记。以下是场景:
- 用户第一次打开对话框并添加注释(当他们重新打开对话框时会显示新注释)
- 用户打开对话框,输入内容然后单击取消(当他们重新打开对话框时,注释显示为在步骤 1 中保存,这很好)
- 用户打开对话框并更新注释(当他们重新打开对话框时,注释已根据需要更改)
- 用户打开对话框并单击取消(现在当他们重新打开对话框时,注释会恢复步骤 1 中保存的值)
因此,当用户更新笔记,然后重新打开对话框并点击取消时,就会出现问题。表单恢复到第一次保存。这是脚本:
jQuery(function() {
var originalContent;
jQuery( "#dialog-form" ).dialog({
autoOpen: false,
resizable: false,
height: 480,
width: 460,
modal: true,
buttons: {
"Save": function() {
jQuery( ".edit_user_property" ).submit();
jQuery( "#dialog-form" ).dialog('close');
},
"Cancel": function(event, ui) {
jQuery( "#dialog-form" ).html(originalContent).dialog('close');
},
},
open: function(event, ui) {
originalContent = jQuery( "#dialog-form" ).html();
},
}),
jQuery('.ui-dialog-titlebar-close').click(function() {
originalContent = jQuery( "#dialog-form" ).html();
jQuery( ".edit_user_property" ).submit();
})
});
我正在尝试存储此处概述的当前状态https://stackoverflow.com/a/8969084/2074243然后在用户取消时传递它。我试图在更改和提交时更新我的变量,但都没有奏效。变量似乎落后了一步。我的对话框由 link_to_function 打开:
<%=link_to_function("Notes", 'jQuery( "#dialog-form" ).dialog( "open" )' %>
如果这很重要。另外,我运行 Rails 2.3.17,因此使用 jQuery 与 $。此外,如果它有帮助,这是表格:
<div id="dialog-form" title="Notes";">
<form action="/properties/add_notes" class="edit_user_property" id="edit_user_property_108458" method="post" onsubmit="new Ajax.Request('/properties/200465/add_notes', {asynchronous:true, evalScripts:true, parameters:Form.serialize(this)}); return false;"><div style="margin:0;padding:0;display:inline"><input name="_method" type="hidden" value="put" /><input name="authenticity_token" type="hidden" value="6/D6syvFo5nuLxla9dzcIadK5NbYxpPGKqilOwT+7Xw=" /></div>
<textarea id="user_property_notes" name="user_property[notes]" placeholder="Add notes" rows="20">Great property right</textarea>
</form>
</div>