Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Web applications 在web应用程序中填写/保存表单时的可用性问题_Web Applications_Usability - Fatal编程技术网

Web applications 在web应用程序中填写/保存表单时的可用性问题

Web applications 在web应用程序中填写/保存表单时的可用性问题,web-applications,usability,Web Applications,Usability,我在一家抵押贷款公司内部开发了一个web应用程序。我们一直遇到这样的问题:人们在与客户交谈时填写表单,然后在点击“保存”之前离开屏幕单击,从而丢失数据(当然,他们可以单击“上一步”,但他们从来没有想到这一点) 我们用户的第一个“解决方案”是要求我们在每次字段更改后自动保存数据。即使忽略了明显的可伸缩性问题,在我看来,这与地球上几乎所有其他web应用程序的惯例完全背道而驰,当你提交表单时,你会节省时间(像GMail这样的Ajax应用程序总数不算在内,因为它们完全是另一头野兽)。我错了吗?或者(再次

我在一家抵押贷款公司内部开发了一个web应用程序。我们一直遇到这样的问题:人们在与客户交谈时填写表单,然后在点击“保存”之前离开屏幕单击,从而丢失数据(当然,他们可以单击“上一步”,但他们从来没有想到这一点)

我们用户的第一个“解决方案”是要求我们在每次字段更改后自动保存数据。即使忽略了明显的可伸缩性问题,在我看来,这与地球上几乎所有其他web应用程序的惯例完全背道而驰,当你提交表单时,你会节省时间(像GMail这样的Ajax应用程序总数不算在内,因为它们完全是另一头野兽)。我错了吗?或者(再次忽略可伸缩性),你认为这是一个合理的方法吗? 接下来,我们的实际解决方案是,当用户离开脏表单时,弹出旧的“是否确实要浏览此页面?”对话框。现在我们收到了关于对话结构的投诉。大多数应用程序都会说“您想保存更改吗”,所以点击“是”或“确定”是一个好的、安全的选择。但在“导航离开”对话框中,单击“确定”是不安全的非保存选项。当然,我们的用户没有阅读对话框,他们只是点击OK,然后砰的一声,他们丢失了更改

我很犹豫是否要更改此对话框,因为(a)该对话框是标准的,由浏览器生成,(b)我甚至不知道如何更改该对话框,以及(c)它已经存在数月了,人们(包括已经发现它的非白痴)将不得不重新学习他们的行为


您认为这里的最佳路径是什么?

我想说,使用AJAX自动保存表单-无论是在计时器上,还是在更改字段时


您提到了该解决方案的可伸缩性,但您还说它是一个内部应用程序,这使我认为在这种情况下,可伸缩性可能不会是一个大问题。

如何保存客户端,例如,在Cookie中,提供一个按钮,该按钮将使用上次保存的值填充表单?

为什么不看看StackOverflow在开始回答问题而不提交问题时会做什么,然后尝试离开。我认为UI在这里的表现很好

Are you sure you want to navigate away from this page?
You have started writing an answer.
Press OK to continue, or Cancel to stay on the current page.

如果你的用户不读对话框弹出窗口,他们说可以,我可以考虑再问一遍。p>

Your valuable edits will be LOST. 
Are you sure you want to navigate away from this page without saving?
Press OK to continue, or Cancel to stay on the current page.

对于那些无法学习新的工作方法的用户,恐怕我没有解决方案。

我会选择保存任何元素的onblur,或者如果整个表单散焦(onblur)。您可以在卸载时弹出对话框以自动保存表单(甚至在对话框显示之前)。只需附加onunload事件即可保存它

我犹豫是否要更改此对话框,因为(a)该对话框是由浏览器生成的标准对话框,(b)我甚至不知道如何更改该对话框

(b) 事实上,你不能

除了total AJAX*之外,我能想到的唯一解决方法是使用window.confirm()在[before]上传时询问自己的问题,如果按下OK,则在从事件处理程序返回之前使用同步XMLHttpRequest推送数据以保存


*:并不是说完全使用AJAX是一种不好的方式,但要让整个应用程序都这样运行可能需要做很多工作。

您实际上无法更改该对话框,因此它甚至不是一个选项。这是一个有趣的想法,但我不确定我是否完全遵循您的方法。您能对此进行一点扩展吗?每当更新字段时,都将其值存储在cookie中(使用JS)。当用户单击“保存”时,删除所有这些cookie。每当他打开表单时,如果有cookies,请给他“恢复上次保存的状态”选项