Javascript 提交表格确认书

Javascript 提交表格确认书,javascript,forms,confirm,onsubmit,Javascript,Forms,Confirm,Onsubmit,我想在用户提交表单之前得到他们的确认。这将防止意外发布可能不完整或不正确的表单 以下是我的表单元素: <form action="manager.php?method=update&id=<?php echo $user->id;?>" onsubmit="return confirm_update();" method="POST" id="user_update"> 脚本的问题在于,如果用户在JavaScript提示符中单击Cancel,它不会阻止

我想在用户提交表单之前得到他们的确认。这将防止意外发布可能不完整或不正确的表单

以下是我的表单元素:

<form action="manager.php?method=update&id=<?php echo $user->id;?>" onsubmit="return confirm_update();"  method="POST" id="user_update"> 
脚本的问题在于,如果用户在JavaScript提示符中单击
Cancel
,它不会阻止表单发布

如何更正此问题,以避免用户意外提交表单

以下是我尝试实现的功能的完整描述:

用例-“更新详细信息”

  • 用户转到更新页面
  • 用户在表单字段中输入详细信息
  • 用户点击提交按钮
  • 出现确认消息
  • 如果选择“确定”按钮,则继续提交表格
  • 否则取消操作并停留在当前页面

不返回0和1,而是返回
true
false
。实际上,您可以将函数缩短为:

function confirm_update() {
    return confirm("Are you sure you want to submit?");
}
尝试:


默认情况下,我会执行onclick返回false,这对我很有用

<form action="manager.php?method=update&id=<?php echo $user->id;?>"  method="POST" id="user_update"> 
<input type='submit' onclick="return confirm('Do you wish to update details?');return false;"/>
</form>

首先,你应该重新考虑你的方法。您不应该询问用户是否希望提交可能不完整或无效的表单,而应该使用javascript来防止这种情况发生,即使用js执行客户端验证。您正在做的事情本质上是通过单击提交来完成的


但是,如果您想保持这种方式,您必须阻止submit按钮实际将数据提交到指定的操作,例如通过javascript将form操作更改为“#”,然后在使用js代码单击ok时触发submit,例如使用XmlHttpRequest。

您的做法正好相反

if(confirm("Do you wish to update details?"))
{
    return 1;
}
else
{
    return 0;
}
话虽如此,您的代码可以缩短为一行:

return confirm("Hit OK to continue, Cancel to... cancel.");

刚刚在我的机器上检查了上面的代码片段。适用于FF9,Chrome。谢谢mahok,但是这不起作用,因为字段中已经有详细信息,因为它们是从数据库检索的。因此,验证将始终为真,例如,因为电子邮件地址字段中存在电子邮件地址。此表单允许他们更改数据库中的详细信息:)假设您注册了一项服务,但您的用户名已被占用。您可能不知道,也可能输入了有效的用户名,但每次提交时,您都会返回到表单,并通知您的姓名已被采纳。不仅每次发生这种情况时您都必须提交表单,更糟糕的是,它会询问您是否要提交数据。。。相反,您可以检查onBlur或onChange数据是否仍然有效,然后对数据进行初步验证。您单击submit,因为您希望传输数据。只有当(且仅当)数据明显缺失或无效时,才应进行干预。否则,您只需减慢一个已经不需要的过程(再次读取表单并更改不正确的值),就像我之前的注册示例一样,这将很快变得令人讨厌。
if(confirm("Do you wish to update details?"))
{
    return 1;
}
else
{
    return 0;
}
return confirm("Hit OK to continue, Cancel to... cancel.");