javascript - 如何在 Bootstrap 中的提交按钮上设置回调函数?

标签 javascript jquery bootstrap-4

我使用 bootstrap 模态对话框作为用户注册表单,如下所示:

<form>
            <div class="modal-dialog" role="document">
                <div class="modal-content">
                    <div class="modal-header">
                        <h3 class="modal-title" id="signupModalLabel">Sign Up</h3>
                    </div>
                    <div class="modal-body">
                        <div class="form-group">
                            <label for="user-name-input">User Name</label>
                            <input type="text" class="form-control" id="user-name-input" placeholder="User Name" required>
                        </div>
                        <div class="form-group">
                            <label for="user-email-input">Email address</label>
                            <input type="email" class="form-control" id="user-email-input" aria-describedby="emailHelp" placeholder="Enter email" required>
                        </div>
                        <div class="form-group">
                            <label for="userPasswordInput">Password</label>
                            <input type="password" class="form-control" id="user-password-input" placeholder="Password">
                        </div>
                    </div>
                    <div class="modal-footer">
                        <button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
                        <button type="submit" id="signup-submit-button" class="btn btn-primary">Submit</button>
                    </div>
                </div>
            </div>
        </form>

它工作正常,我想为提交按钮添加回调函数。我需要在该回调上调用网络套接字请求。如果我这样做如下:

$("#signup-submit-button").click(signup);

const signup = () => {
    // make a web socket call
}

可以调用回调函数 signup 但所有表单输入验证都不起作用。表单中的每个 input 都有一个 required 属性。如果我将此留空,则应触发 Bootstrap 验证以验证表单值。

如何在通过验证检查后添加回调?

最佳答案

在表单标签内使用 onsubmit 事件。这将允许在执行 signup() 函数之前检查验证规则。请注意,如果您想禁止验证,那么您也可以将 novalidate 属性添加到表单标签中。

function signup() {

}
<form onsubmit="signup()">
      ...      
</form>

更新:工作解决方案

$('#signup-submit-button').on('click', function() {   $(this).parents('form:first').find('.hiddenButton').click();
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form>
            <div class="modal-dialog" role="document">
                <div class="modal-content">
                    <div class="modal-header">
                        <h3 class="modal-title" id="signupModalLabel">Sign Up</h3>
                    </div>
                    <div class="modal-body">
                        <div class="form-group">
                            <label for="user-name-input">User Name</label>
                            <input type="text" class="form-control" id="user-name-input" placeholder="User Name" required>
                        </div>
                        <div class="form-group">
                            <label for="user-email-input">Email address</label>
                            <input type="email" class="form-control" id="user-email-input" aria-describedby="emailHelp" placeholder="Enter email" required>
                        </div>
                        <div class="form-group">
                            <label for="userPasswordInput">Password</label>
                            <input type="password" class="form-control" id="user-password-input" placeholder="Password">
                        </div>
                    </div>
                    <div class="modal-footer">
                        <button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
                        <button type="submit" class="hiddenButton" style="display:none"></button>
                        <button type="button" id="signup-submit-button" class="btn btn-primary">Submit</button>
                    </div>
                </div>
            </div>
        </form>

关于javascript - 如何在 Bootstrap 中的提交按钮上设置回调函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47348553/

相关文章:

html - MDB Bootstrap 轮播指示器改变位置

javascript - 转换为文本框搜索而不是下拉搜索

javascript - React JS - Firebase使用map方法在组件中显示数据

javascript - 如何比较 JavaScript 中的事件

带 Bootstrap 4 数据表的 Angular 4

html - radio 、下拉菜单、检查同一行

javascript - 通过 print-html-element npm 库打印时如何防止下载文件?

javascript - 获取 HTML 的 ID

javascript - 如何使用 jquery 为缩放 css 属性设置动画?

jquery - Facebook 客户端永久访问 token