0

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

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

< p:inputText value="#{someMB.someValue}" id="id" onkeydown="isChanges=true"></p:inputText>

< p:selectOneMenu value="#{someMB.someValue}" id= "#{cc.attrs.id}" >
< p:ajax event="change" onsuccess="isChanges=true" />
</p:selectOneMenu>
等....


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

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

< /script>
4

1 回答 1

2

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

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

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

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

于 2012-11-13T09:52:00.897 回答