3

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

这是我的表单元素:

<form action="manager.php?method=update&id=<?php echo $user->id;?>" onsubmit="return confirm_update();"  method="POST" id="user_update"> 

这调用了我的函数confirm_update()

function confirm_update()
{
  if(confirm("Do you wish to update details?"))
  {
    return 0;
  }
  else
  {
    return 1;
  }
}

Cancel该脚本的问题在于,如果用户单击JavaScript 提示,它不会阻止表单 POST 。

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

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

用例- “更新详细信息”

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

5 回答 5

10

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

function confirm_update() {
    return confirm("Are you sure you want to submit?");
}
于 2012-02-01T11:07:24.637 回答
2

你反其道而行之!

if(confirm("Do you wish to update details?"))
{
    return 1;
}
else
{
    return 0;
}

话虽如此,您的代码可以缩短为一行:

return confirm("Hit OK to continue, Cancel to... cancel.");
于 2012-02-01T11:12:07.243 回答
1

尝试:


function confirm_update() {
    if(confirm("Do you wish to update details?")) {
        return true;
    }
    else {
        return false;
    }
}

于 2012-02-01T11:08:06.890 回答
1

我会做一个 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>
于 2012-02-01T11:11:11.747 回答
1

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

但是,如果您想保留您的方法,则必须阻止提交按钮实际将数据提交到指定的操作,例如通过 javascript 将表单操作更改为“#”,然后如果用您的 js 单击确定,则触发提交-code,例如通过使用 XmlHttpRequest。

于 2012-02-01T11:11:28.083 回答