我在我的网站上设计了一个表单。 我的表格有一个提交计时器。 我的问题是:如果用户决定离开页面并且不想再提交表单,是否有办法在他/她离开/关闭/刷新页面之前提交表单?
答案 0 :(得分:2)
执行此操作以检测页面关闭:
window.onbeforeunload = closingCode;
function closingCode(){
document.getElementById("form").submit();
return null; //<-- this prevents the dialog confirm box
}
它不会在刷新时触发。您必须在后端进行操作 - 即通过该会话/ IP地址跟踪对该页面的访问。
但是我会说你正在接近这个错误的方式。而不是在他们离开之前尝试提交。使用阈值为表单和/或其字段提交onChange事件。
这是完整的例子。 HTML
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<form name="refreshForm" id="form" action="form.php">
<input type="text" name="visited" value="" />
<input type="text" value="hello" />
<input type="submit" />
</form>
<script>
window.onbeforeunload = closingCode;
function closingCode(){
document.getElementById("form").submit();
return null;
}
</script>
</body>
</html>
PHP(form.php)
<?php
file_put_contents('log.text', $_REQUEST);
这并没有做任何有用的事情,但你会看到它创建文件并写入文件。