我有一个申请表(使用c#/ web forms / Asp.Net构建)。
申请表是一种向导风格 - 5个部分 - 在它们之间分配了大约30个各种输入字段,然后是“下一个”。按钮移动到下一部分。
我想尝试准确衡量完成表单所需的时间。
显然,我可以使用Asp&#39; <iframe>
并记录页面加载和最终按钮提交之间的时间段,但它不会完全准确。
它不准确的原因是因为用户可能会打断流程 - 也许他们会因为做其他事情而中断或者去寻找填写表格的信息。
所以我想做的是尽可能准确地表达。我知道这可能涉及javascript,因为表单只会在每个完整部分的末尾发回。
但是,javascript不是我的语言,因此我不确定最佳策略。我不是在寻找完整的解决方案,只是建议一种可行的方法来实现我所需要的。
答案 0 :(得分:1)
这不是技术上的答案,而是“帮助你顺利完成”。
如果您希望在用户端使用本地存储,则可以使用本地存储。如果您需要未完成表单的结果,您还需要经常将信息发送到后端。
如果表单中断/用户断开连接:
在表单完成时,计算这些迭代之间的时间。将它们全部添加起来,您就可以获得表单中用户操作的完整日志,包括用户何时断开连接的信息(您可能希望该信息检查表单是否正常工作)。
答案 1 :(得分:1)
假设以下结构:
<form class="eform">
<input name="" />
<input name="" />
...
<input name="" />
</form>
您有几个选择
当用户开始填写表单?时,例如,当点击(将鼠标对准)任何表单输入时。
单击提交按钮后完成,或者更好的是,当该表单的提交事件被触发时:
var start=0, end;
$('.eform input').on('focus', function(e){
start=Date.now()
})
$(document).on('submit','.eform', function(e){
end=Date.now()-start;
console.log("Seconds filling the form", parseFloat(end/1000).toFixed(2) )
});
答案 2 :(得分:0)
mydata={}
; {start:event.timeStamp,lastTriggered:event.timeStamp,accumulated:0}
lastTriggered
,IF event.timeStamp - mydata.lastTriggered
小于阈值(让我们说10000毫秒),然后将累计设置为mydata.accumulated += event.timeStamp - mydata.lastTriggered
。最后,更新mydata.lastTriggered = event.timeStamp
mydata
并发送到服务器