在提交表单之前使用确认对话框的正确方法是什么?我在实现中看到两个问题,但无法找到解决方案 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>
答案 0 :(得分:1)
希望以下代码有所帮助:
$("#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;
答案 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..");
如果用户确认,则会提交表单,否则会提示确认。如果您有两个功能,只需声明正确,就会在功能名称之前缺少功能。