【问题标题】:event.preventDefault() not working in validationevent.preventDefault() 在验证中不起作用
【发布时间】:2022-01-20 12:38:50
【问题描述】:

我有一个页面,用户可以在帖子下发表评论。 post 和 cmets 使用 ajax 加载。我正在尝试使用以下代码验证评论表单。

document.querySelector('body').addEventListener('submit', event => {
                if (event.target.matches('.needs-validation')) {
                    if (event.target.checkValidity() === false) {
                            event.preventDefault();
                            event.stopPropagation();
                        }
                        event.target.classList.add('was-validated');
                }
            }, false);

评论表单使用ajax提交。

$('body').on('submit', '.cmnt-frm', function(e) {

现在正在验证表单并显示错误消息,但正在使用 ajax 提交表单。 event.preventDefault() 不工作。 下面的代码有效,但仅适用于初始页面加载。在提交新帖子时,帖子列表会使用 ajax 进行更新,在这种情况下这不起作用

window.addEventListener('load', function() {
                // Fetch all the forms we want to apply custom Bootstrap validation styles to
                var forms = document.getElementsByClassName('needs-validation');
                // Loop over them and prevent submission
                var validation = Array.prototype.filter.call(forms, function(form) {
                    form.addEventListener('submit', function(event) {
                        if (form.checkValidity() === false) {
                            event.preventDefault();
                            event.stopPropagation();
                        }
                        form.classList.add('was-validated');
                    }, false);
                });

            }, false);

代码有什么问题。请帮忙。

【问题讨论】:

标签: javascript forms dom-events


【解决方案1】:

event.target.className.matches('needs-validation') .....

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-02
    • 2016-06-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多