保留未保存的表单:按钮提交事件将重置“Changed_Form”状态
Leave Unsaved form: button submit event will reset the "Changed_Form" status
请参阅下面的代码示例。
.HTML:
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<asp:FileUpload ID="FileUpload1" runat="server" />
<!-- upload button and Save button -->
<asp:Button ID="Upload" runat="server" Text="Upload" />
<asp:Button ID="Save" runat="server" Text="Save" />
<a href="otherpage.aspx">Cancel</a>
JavaScript: 默认情况下不会更改表单 var form_Change = 0;
window.onbeforeunload = function(e) {
if (form_Change==1){
// if the form is changed, show a confirm box
return 'Are you sure you want to navigate away from this page?';
}
}
$('input[type=text]').live('keyup',function(){
form_Change =1;
});
通常
用户在文本框中键入而未保存它。然后他试图重定向到其他页面或重新加载页面,鲍泽给他带来了一个确认框。
但
我首先在文本框中输入,然后单击"上传按钮",该按钮用于上传文件,但不保存(不影响更改)表单(并将未保存的文本保留在文本框中,就像回发后一样)。鲍泽给我带来了不需要的确认框。
我尝试修复它并添加类似的东西,
var button_inside_form =0;
$('Upload').live('click',function(){
button_inside_form =1;
});
//and update form change logic in onbeforeunload
但是,在页面回发后。它重新加载 JavaScript,form_Change
重置为 0。因此,系统不知道表单是否已更改。
"后如何检查表单是否已更改,并且在单击"上传"时不带回确认框。
回答我自己。
我使用cookie.即将var form_change
转换为JavaScript中的cookie。
然后在服务器代码中,不是回传,我添加它来重置 cookie。
ClientScript.RegisterClientScriptBlock(Me.GetType, "IsPostBack", "var isPostBack = true;", True)
要检查
if (typeof isPostBack != 'undefined') {
resetFormChange();}
使用此选项可防止"提交"按钮上的"确认"框
$('form').submit(function() {
window.onbeforeunload = null;
});
多思考。如果提交的表单将保留在同一页面中,则 cookie 是必需的。form.submit将正常工作,但需要确保需要在"取消"按钮上设置"UseSubmitBehaviors"。或者如果导致页面停留,最好将它们放在更新面板中。
相关文章:
- 事件和状态
- 获取选择框的状态
- 相位器状态未捕获参考错误
- 如何更改reactjs中外部/独立组件的状态或属性
- 如何使用密码检测网络中的状态连接
- Ember.js-接口状态应该存储在哪里
- 混合 ui-sref 和 $state.go 在 Angular ui-router 中进行状态转换
- 在Angular 2中布线期间保持零部件处于活动状态
- 在mvc应用程序中,在回发时保留最初隐藏的文本框的隐藏或可见状态
- XMLHttpRequest未返回值-状态202
- 使用javascript反复检查用户在facebook上的登录状态
- 如何使bxslider仅在移动视图中处于活动状态
- 获取ASP.NET Ajax Timer状态
- React redux初始化功能,无论状态变化如何
- 无法在现有状态转换期间更新-未使用任何非法的setState()
- 悬停下拉菜单即使在鼠标移出后也保持活动状态
- 从组件状态的数组中删除元素
- iOS 中的按钮触摸状态
- 使用AngularJS中的UI路由器将状态重定向到默认子状态
- 设计redux状态树