繁体   English   中英

如何在 EJS 模板中的表单发布请求之前出现确认对话框

[英]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() function 放置不正确,甚至没有必要,但我不确定是否还有其他方法可以做到这一点。 当我单击创建用户按钮时,应呈现确认对话框并询问我是否确定要创建用户。 如果我 select 是的,它应该提交表单但是如果我点击取消,它不应该做表单发布请求

您可以使用 JavaScript submit() function 根据响应远程提交您的表单。 这意味着您必须使用普通按钮,而不是使用提交按钮。

 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 ,以防止function运行后页面刷新。

我很惊讶您的文本编辑器没有抱怨 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') } }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM