在提交表单之前使用确认对话框的正确方法

时间:2015-03-11 08:47:05

标签: javascript jquery forms

在提交表单之前使用确认对话框的正确方法是什么?我在实现中看到两个问题,但无法找到解决方案 1)我在提交时显示一个对话框。我在ShowConfirmation中使用全局变量“val”,这在ShowConfirmation函数之外是不可见的。如果我使用调试器,则在“.Submit”函数中未定义“val” 2)因为我有“e.preventDefault”,所以表格没有提交。在函数ShowConfirmation中强制“提交”不会提交表单。

<input type="submit" class="button" value="CONFIRM" onclick="Confirm())">
<Script>
var val;
$("#form").submit(function(e)
{
  // confirmation popup
  e.preventDefault();

  if (val==true)
  {
  // Do something
  }

})

ShowConfirmation(val) {
var r = confirm("Press a button");
if (r == true) {
  console.log("you pressed ok");
  .....
  val=true;
  $("#form").submit();
}
else {
  console.log("you pressed cancel");
  }
}
Confirm() {
...
...
ShowConfirmation(val);
}
</Script>

2 个答案:

答案 0 :(得分:1)

希望以下代码有所帮助:

&#13;
&#13;
$("#form").submit(function()
{

  if (confirm("Press a button"))
  {
     // Do something
     console.log("you pressed ok");
     $(this).off("submit").submit();
  }
  else {
     console.log("you pressed cancel");
  }
  return false;
})
&#13;
&#13;
&#13;

答案 1 :(得分:0)

如果您收听提交然后再回拨(使用$(this).submit()),您将加入无限循环,只需在确认框中按“确定”即可停止。

而不是所有功能,情况实际上非常简单。

HTML(示例):

<form id="form">
    <input type="submit" value="confirm" />
</form>

使用Javascript:

$('#form').click(function (e) {
   e.preventDefault();
    confirm("Are you sure?") ? $(this).submit() : alert("ok..");
});

我们只想检查用户是否确认,而不是使用变量和类似的东西,因此我们使用舒适的三元运算符:

confirm("Are you sure?") ? $(this).submit() : alert("ok..");

如果用户确认,则会提交表单,否则会提示确认。如果您有两个功能,只需声明正确,就会在功能名称之前缺少功能

小提琴:http://jsfiddle.net/1jkyuez8/1/