【问题标题】:Detect If Changes Have Been Made To Input Form检测是否对输入表单进行了更改
【发布时间】:2014-03-18 01:27:26
【问题描述】:

我有一个带有 Jquery 和 PHP 的输入表单我想要归档的是,如果用户对表单进行了任何更改并且他们尝试离开页面 弹出消息显示他们是否想要退出并丢弃更改还是先保留并保存更改?

我怎么能存档这个想法,但我现在所做的只是检查字段中是否有数据,但我正在使用 HTML 中的 value='' 功能来获取当前设置数据库。

只有在提交还没有被按下时才运行这个函数。

【问题讨论】:

  • 你到底想要什么?尝试使用尽可能多的特定语言单词,并请展示您已经尝试过的内容。此外,示例输入和预期输出也会很棒
  • 我试图尽可能地解释它我的意思是当用户在输入字段中键入任何数据并且没有按下保存的按钮并且他们尝试离开页面时需要弹出错误提示“您确定要退出并放弃更改”

标签: javascript php jquery field


【解决方案1】:

1 创建一个标志来指定是否已更改:

var changes = false;

2 将事件侦听器绑定到将更改设置为 true 的每个输入和文本区域:

$('textarea,input').on('keypress change input', function() {
    changes = true;
});

3 将事件侦听器绑定到 onsubmit,将更改设置为 false:

$('form').on('submit', function () {
    changes = false;
});

4 将事件监听器绑定到 onbeforeunload,如果有变化则返回问题:

$(window).on('beforeunload', function () { 
    if (changes) return "Do you really want to leave?"; 
});

JSFiddle 上的演示:http://jsfiddle.net/TimWolla/VYKeu/

【讨论】:

  • 我遇到的唯一其他问题是,因为我使用 JQuery 实时提交表单,所以无法检测我是否按下了提交:/ 感谢您迄今为止的帮助!
  • @user279297 只需在您的 AJAX 请求或您正在使用的任何内容中重置 changes
  • 不想听起来像个菜鸟大声笑我将如何重置更改。
  • @user279297 没有变化,变量changes,看我的第三个代码块。
  • 我能把它改成真而不是假
猜你喜欢
  • 2011-06-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-07
相关资源
最近更新 更多