如何使用 formvalidation.io 和多​​种语言在多选 (selectpicker) 中显示默认验证消息

Posted

技术标签:

【中文标题】如何使用 formvalidation.io 和多​​种语言在多选 (selectpicker) 中显示默认验证消息【英文标题】:How to show the default validation message in a multi select (selectpicker) with formvalidation.io and multiple languages 【发布时间】:2021-09-29 11:56:25 【问题描述】:

目标 以各种语言显示多选字段(使用 selectpicker 样式)的默认错误消息。

说明 我有一个多步骤向导,并希望使用formvalidation.io JS 插件验证多选下拉菜单。我不知道如何使它工作,显示来自相应语言文件(en_US.jsde_DE.js)的默认消息。 我不明白的是如何使用默认错误消息进行来自 formvalidation.io 的选择验证。单一语言的文档是here,但我不知道如何使它适用于多种语言。

JS 代码

 var _initValidation = function () 
        let language = window.uh.localeIso

        const plugins = () => 
            return 
                trigger: new FormValidation.plugins.Trigger(),
                bootstrap: new FormValidation.plugins.Bootstrap(),
            
        

        
        if (language === 'en_GB')  language = 'en_US'
       
       // Step 1
        _validations.push(FormValidation.formValidation(
            _formEl,
            

                locale: language,
                localization: FormValidation.locales[language],

                fields: 
                    company: 
                        validators: 
                            notEmpty: ,   // <---- this works with multiple languages
                        ,
                    
                    // and so on...
            ,
                plugins: plugins(),
            ,
        ))

        // Step 2
        _validations.push(FormValidation.formValidation(
            _formEl,
            
              fields: 
                'job_ad_visible_country[]': 
                    validators: 
                        choice: 
                            min: 1,
                            max: 3,
                            message:     // <--- what here for the default validation message in multiple languages?
                            
                        ,
                     ,
                   
                ,
                plugins: plugins(),
            ,
        ))

HTML 代码

...

<div class="col-xl-6">
            <div class="form-group">
                <label> "job.wizard.two.country" | trans </label>
                <select class="form-control form-control-lg selectpicker"
                        name="job_ad_visible_country[]"
                        title=" "job.wizard.nothing-selected" | trans "
                        multiple="multiple"
                        data-depend-select="true"
                        data-dependent="country_region">
                    % for country in countries %
                        <option value=" country.getCountryId() " selected="selected">
                             country.getName() | trans 
                        </option>
                    % endfor %
                </select>
                <span class="form-text text-dark-40">
                     "job.wizard.two.country.subtitle" | trans 
                </span>
            </div>
        </div>

...

...当然还有最底部的 JS 脚本

<script type="text/javascript" src=" '/assets/wizard.js' | asset "></script>
<script type="text/javascript" src="/assets/translations/validation/% if locale_iso() == 'en_GB' %en_US% else % locale_iso() % endif %.js"></script>

【问题讨论】:

【参考方案1】:

解决方案:

在第 2 步中缺少语言。所以它必须看起来像这样(要查看我如何获得语言代码,请查看我的问题):

 _validations.push(FormValidation.formValidation(
            _formEl,
            

              locale: language,
              localization: FormValidation.locales[language],

              fields: 
                'job_ad_visible_country[]': 
                    validators: 
                        choice: 
                            min: 1,
                            max: 3,   
                            
                        ,
                     ,
                   
                ,
                plugins: plugins(),
            ,
        ))

【讨论】:

以上是关于如何使用 formvalidation.io 和多​​种语言在多选 (selectpicker) 中显示默认验证消息的主要内容,如果未能解决你的问题,请参考以下文章

带有引导选择的 FormValidation.io

Formvalidation.io - 无法读取 null 的属性“classList”

formvalidation.io 自动对焦到隐藏目标

即使表单有效,formvalidation.io 也会阻止表单提交

使用 Formvalidation.io 的多个提交按钮

我可以将 formvalidation.io 与 React 和 Materialize-css 一起使用吗