如何使确认对话框出现在 EJS 模板中的表单 Post 请求之前
How to make a Confirm Dialog Appear before Form Post Request in EJS template
我正在尝试使用类似这样的东西创建一个确认对话框:confirm('Are you sure?')
在我的 EJS 表单中,但我不知道在哪里以及如何让它正常工作。
这是我目前的 EJS 模板代码:
<div id="popupAddUser" class="addUser">
<div class="card h-100">
<div class="row">
<div class="col-7"><h2>Create New User</h2></div>
</div>
<div class="card-body">
<form method="POST" id="formAddUser" action="/add-user" enctype="multipart/form-data">
<div class="container">
<div class="row">
<div class="col-xl-5 float-right">
<div class="form-group">
<input class="form-control" type="text" placeholder="Type a User name"
name="create_user">
</div>
<div>
<button type="submit" class="btn btn-primary float-right" form="formAddUser" onclick="checker()">Create
User
</button>
</div>
</div>
</div>
</div>
</form>
</div>
</div>
</div>
<script>
function checker(){
if( confirm("Are you sure you want to create a new User in the database?")){
continue;
}else{
break;
}
}
</script>
我知道 checker() 函数没有正确放置,甚至没有必要,但我不确定是否有其他方法可以做到这一点。当我单击创建用户按钮时,应呈现确认对话框并询问我是否确定要创建用户。如果我 select 是,它应该提交表单,但如果我单击取消,它不应该执行表单 post 请求
您可以使用 JavaScript submit()
功能根据响应远程提交表单。这意味着您必须使用普通按钮,而不是使用提交按钮。
function checker(){
if(window.confirm("Are you sure")){
document.getElementById("formAddUser").submit();
} else {
return;
}
}
<div id="popupAddUser" class="addUser">
<div class="card h-100">
<div class="row">
<div class="col-7"><h2>Create New User</h2></div>
</div>
<div class="card-body">
<form method="POST" id="formAddUser" action="/add-user" enctype="multipart/form-data">
<div class="container">
<div class="row">
<div class="col-xl-5 float-right">
<div class="form-group">
<input class="form-control" type="text" placeholder="Type a User name"
name="create_user">
</div>
<div>
<button type="button" class="btn btn-primary float-right" form="formAddUser" onclick="checker()">Create
User
</button>
</div>
</div>
</div>
</div>
</form>
</div>
</div>
</div>
注意按钮类型设置为button
而不是submit
以防止函数运行后页面刷新。
我很惊讶你的文本编辑器没有抱怨你的 if-else 语句中的 continue 和 break 语句!!
我会:
删除内联 onclick 事件处理程序
改用 addEventListener() 方法或对表单元素的 onsubmit 调用。
使用 event.preventDefault() 方法在单击取消按钮时停止提交表单。
document.getElementById('form').addEventListener(
'submit',
(e) => checker(e)
)
function checker(e) {
if(!confirm('Are you sure?')) {
e.preventDefault()
alert('Form was not submitted')
}else {
alert('New user created')
}
}
我正在尝试使用类似这样的东西创建一个确认对话框:confirm('Are you sure?')
在我的 EJS 表单中,但我不知道在哪里以及如何让它正常工作。
这是我目前的 EJS 模板代码:
<div id="popupAddUser" class="addUser">
<div class="card h-100">
<div class="row">
<div class="col-7"><h2>Create New User</h2></div>
</div>
<div class="card-body">
<form method="POST" id="formAddUser" action="/add-user" enctype="multipart/form-data">
<div class="container">
<div class="row">
<div class="col-xl-5 float-right">
<div class="form-group">
<input class="form-control" type="text" placeholder="Type a User name"
name="create_user">
</div>
<div>
<button type="submit" class="btn btn-primary float-right" form="formAddUser" onclick="checker()">Create
User
</button>
</div>
</div>
</div>
</div>
</form>
</div>
</div>
</div>
<script>
function checker(){
if( confirm("Are you sure you want to create a new User in the database?")){
continue;
}else{
break;
}
}
</script>
我知道 checker() 函数没有正确放置,甚至没有必要,但我不确定是否有其他方法可以做到这一点。当我单击创建用户按钮时,应呈现确认对话框并询问我是否确定要创建用户。如果我 select 是,它应该提交表单,但如果我单击取消,它不应该执行表单 post 请求
您可以使用 JavaScript submit()
功能根据响应远程提交表单。这意味着您必须使用普通按钮,而不是使用提交按钮。
function checker(){
if(window.confirm("Are you sure")){
document.getElementById("formAddUser").submit();
} else {
return;
}
}
<div id="popupAddUser" class="addUser">
<div class="card h-100">
<div class="row">
<div class="col-7"><h2>Create New User</h2></div>
</div>
<div class="card-body">
<form method="POST" id="formAddUser" action="/add-user" enctype="multipart/form-data">
<div class="container">
<div class="row">
<div class="col-xl-5 float-right">
<div class="form-group">
<input class="form-control" type="text" placeholder="Type a User name"
name="create_user">
</div>
<div>
<button type="button" class="btn btn-primary float-right" form="formAddUser" onclick="checker()">Create
User
</button>
</div>
</div>
</div>
</div>
</form>
</div>
</div>
</div>
注意按钮类型设置为button
而不是submit
以防止函数运行后页面刷新。
我很惊讶你的文本编辑器没有抱怨你的 if-else 语句中的 continue 和 break 语句!! 我会:
删除内联 onclick 事件处理程序
改用 addEventListener() 方法或对表单元素的 onsubmit 调用。
使用 event.preventDefault() 方法在单击取消按钮时停止提交表单。
document.getElementById('form').addEventListener( 'submit', (e) => checker(e) ) function checker(e) { if(!confirm('Are you sure?')) { e.preventDefault() alert('Form was not submitted') }else { alert('New user created') } }