我在网页上有一个表单。当用户从该页面移动时,我想检查表单是否已提交。如果是,则用户只是继续到下一页,如果没有,则用户收到警报消息并返回到表单所在的原始页面。
我对javascript不太熟悉,所以如果可能,我会欣赏一些代码片段?
GF
答案 0 :(得分:1)
你的问题有点模糊。您的问题暗示您是异步提交表单,但您说您不熟悉JavaScript。异步提交表单需要JS知识。另外,如果你实际上同步提交表单,那么解决方案就太明显了(只是在服务器端有条件地渲染一些JS)。
如果您实际上是异步提交表单,那么只需在成功提交表单后将一些标记/切换设置为表单的data-xxx
属性。 E.g。
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">';
}
?>