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
,它不会阻止表单发布
如何更正此问题,以避免用户意外提交表单
以下是我尝试实现的功能的完整描述:
用例-“更新详细信息”
- 用户转到更新页面
- 用户在表单字段中输入详细信息
- 用户点击提交按钮
- 出现确认消息
- 如果选择“确定”按钮,则继续提交表格
- 否则取消操作并停留在当前页面
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.");