【问题标题】:The best approach of getting changes of all input fields in a web page [closed]获取网页中所有输入字段更改的最佳方法[关闭]
【发布时间】:2012-11-13 08:30:32
【问题描述】:

我想为处理页面更改创建确认。例如gmail 或其他许多其他网站都有一个系统,当您更改页面中的字段以及想要离开页面或清除表单输入时,该站点将创建一个确认对话框,帮助您保存您忘记的更改。这是我的解决方案,但我想知道是否有更好的方法。该项目也是 JSF 项目,使用 primefaces 3.4
解决方案:
1.创建一个全局js变量

var isChanges = false;
  1. 将处理程序放在所有输入字段的 onchanges 方法上。






等等……


检测用户是否离开页面或清除表单输入:

< script language="JavaScript">
  window.onbeforeunload = confirmExit;
  function confirmExit()
  {
      if(isChanged && window.confirm("sometext")){
        // Call servers save method
      }
  }

< /script>

【问题讨论】:

  • 这不是 JSF 问题,而是通用 Web 应用程序。
  • 我只是想知道也许 primefaces 或其他 jsf 框架可以处理这个问题。
  • 你混淆了概念。请求由 Web 服务器(JSF、PrimeFaces、Struts2、Spring、ASP.NET MVC、PHP 等)处理,客户端操作(如省略选项卡)由客户端(HTML、Javascript、CSS)处理。
  • 好的,误会见谅。

标签: javascript html jsf primefaces


【解决方案1】:

在我的网络应用程序中,我这样做:

  1. 页面加载时,抓取所有表单,除了具有特殊noHash 类的表单
  2. 对于在上述步骤中找到的每个表单,获取除具有特殊 noHash 类的字段之外的所有字段
  3. 序列化字符串中的字段名称和值,例如“var1=1&var2=2[...]”
  4. 按照上面的定义计算字符串的sha1
  5. 将结果存储为全局变量

然后,当用户尝试离开时,我会按照上述方法重新计算哈希值并查看哈希值是否不同,如果不同,我会在离开页面前提示用户确认。

请注意,这是全部使用 javascript 完成的,因此与您的服务器端脚本语言无关。

【讨论】:

    猜你喜欢
    • 2012-05-09
    • 2016-05-12
    • 2016-05-28
    • 2018-06-21
    • 1970-01-01
    • 2021-12-09
    • 2018-03-10
    • 2016-10-25
    • 2015-07-27
    相关资源
    最近更新 更多