我在网页上有一个表单,当用户从该页面移动时,我想检查表单是否已提交。如果是,那么用户只是继续到下一页,如果没有,用户收到警报消息并返回到表单所在的原始页面。onunload - 检查表单是否已提交
我对JavaScript不太熟悉,所以如果可能的话,我将不胜感激一些代码片段?
GF
我在网页上有一个表单,当用户从该页面移动时,我想检查表单是否已提交。如果是,那么用户只是继续到下一页,如果没有,用户收到警报消息并返回到表单所在的原始页面。onunload - 检查表单是否已提交
我对JavaScript不太熟悉,所以如果可能的话,我将不胜感激一些代码片段?
GF
您的问题有点含糊。你的问题意味着你在异步提交表单,但是你说你不熟悉JavaScript。异步提交表单需要JS知识。另外,如果你真的实际上是同步提交表单,解决方案太明显了(只是在服务器端有条件地渲染一些JS)。
如果您实际上是异步提交表单,那么只需在成功提交表单后设置一些表单的data-xxx
属性即可。例如。
function submit(form) {
// Do your thing to submit it.
// And then on succes:
form['data-submitted'] = true;
return false;
}
然后,在beforeunload
事件你刚才检查令牌/切换是存在的,在它丢失情况下,返回相应的消息。
window.onbeforeunload = function() {
for (var i = 0; i < document.forms.length; i++) {
var form = document.forms[i];
if (form['data-submitted'] != 'undefined' && !form['data-submitted']) {
return "There is unsaved data!";
}
}
}
请注意,您不能使用unload
事件这一点,因为它为时已晚,以保持页面打开。
更新:这样的形式同步提交。好的,无论您使用的是哪种服务器端语言,只要让它在未提交表单时有条件地呈现JS window.onbeforeunload
调用(您显然已知道表单何时提交,您还能如何处理它);) )。表单即将提交时,您还需要禁用window.onbeforeunload
调用。
根据您的问题记录我敢打赌,你知道PHP的,所以这里是一个PHP针对性开球例如:
<?php
if (!$form_is_submitted) {
echo '<script>window.onbeforeunload = function() { return "There is unsaved data!"; }</script>';
echo '<form onsubmit="window.onbeforeunload=null">';
}
?>
嗨, 感谢您的回答。实际上,表单将同步提交。因此,我想检查表单确实已提交的“beforeunload”函数。如果它没有任何反应,则不会将用户带回表单。 我希望这是明确的? GF – 2010-06-30 13:41:35
不可能强迫他们留在同一页面上。但是,可以显示一条消息,询问他们是否想留在同一页面上,然后重点关注表单。 – Hello71 2010-07-15 21:04:03