在 Symfony v5.2 项目中使用 Jquery-validaton v1.19.3 + Bootstrap v4.6 进行输入验证

Posted

技术标签:

【中文标题】在 Symfony v5.2 项目中使用 Jquery-validaton v1.19.3 + Bootstrap v4.6 进行输入验证【英文标题】:Input validation with Jquery-validaton v1.19.3 + Bootstrap v4.6 in Symfony v5.2 project 【发布时间】:2021-05-29 13:20:27 【问题描述】:

简介

我在Symfony v5.2 项目中使用Bootstrap v4.6jQuery v3.5.1jquery-validation v1.19.3 来验证用户输入。

期望

我希望验证看起来相同 - 使用 javascriptphp

采取的步骤

为此我举了一个例子jquery-validation on GitHub

我按照示例进行了操作 - 但部分错误消息仍保留在屏幕上。

示例

我创建了 jsfiddle 来提出问题:Examle on JSFiddle。

通过编写一个小于 3大于 25 个字符的名称来检查。

代码


    let $app_locale = $('html')[0].lang;

    jQuery.validator.setDefaults(
    
        lang: $app_locale,
        errorElement: 'span',
        errorPlacement: function(error, element)
        
            let customError = $([
                '<span class="invalid-feedback mt-0 mb-2 d-block">',
                '  <span class="error-box mb-0 d-block">',
                '    <span class="form-error-icon badge badge-danger text-uppercase">Error</span>',
                '  </span>',
                '</span>'
            ].join(""));

            // Add `form-error-message` class to the error element
            error.addClass("form-error-message");

            // Insert it inside the span that has `mb-0` class
            error.appendTo(customError.find('.error-box'));

            // Insert your custom error
            customError.insertBefore(element);
        ,
        highlight: function (element, errorClass, validClass)
        
            $(element).addClass('is-invalid');
            $(element).closest('.invalid-feedback').toggle();
        ,
        unhighlight: function (element, errorClass, validClass)
        
            $(element).removeClass('is-invalid');
            $(element).closest('.invalid-feedback').toggle();
        
    );

【问题讨论】:

【参考方案1】:

您的代码根本找不到.invalid-feedback,因为它不是element 的祖先,它是&lt;input&gt; 元素。此外,您的选择器 ('.invalid-feedback') 不足以隐藏嵌套的 .error-box.d-block

这似乎运作良好:

    highlight: function (element, errorClass, validClass) 
        $(element).addClass('is-invalid');
        $(element).closest('.form-group').find('span').show();
    ,
    unhighlight: function (element, errorClass, validClass) 
        $(element).removeClass('is-invalid');
        $(element).closest('.form-group').find('span').hide();
    ,

https://jsfiddle.net/chan_omega/9k0L285d/

【讨论】:

以上是关于在 Symfony v5.2 项目中使用 Jquery-validaton v1.19.3 + Bootstrap v4.6 进行输入验证的主要内容,如果未能解决你的问题,请参考以下文章

在symfony项目中使用ajax来删除项目

CSS 和 javascript 在 Symfony 项目中不起作用

在命令 symfony 3.4 上获取项目目录

Symfony 项目 CMS

如何在 Symfony 项目中使用 jQuery 和 webpack-encore?

Symfony 2 还是 Symfony 1.4? [关闭]