【问题标题】:Bootstrap form validation, require 1 of 3 text fields?引导表单验证,需要 3 个文本字段中的 1 个?
【发布时间】:2019-07-06 15:14:48
【问题描述】:

我正在使用带有内置表单验证的 bootstrap 4。我可以要求这样提交一个文本

<div class="col-6 mb-3">
   <label for="field">field</label>
   <input type="text" class="form-control" id="field" name="field" placeholder="" value="" required>
   <div class="invalid-feedback">
      Please enter.
   </div>
</div>

但是,如果我在一个组中有 3 个文本字段(如上)并且用户只需要在其中一个文件上键入内容,我该怎么办。

所有字段为空 - 引导验证失败。

用户在文本字段 2 和 3 中写入内容 - 引导验证通过。

用户在文本字段 1 中写入内容 - 引导验证通过。

用户在文本字段 3 中写入内容 - 引导验证通过。

用户只需在 3 个字段中的至少 1 个字段中写入内容即可通过验证。如果所有 3 个都是空的,则验证失败。

【问题讨论】:

  • 我为你创建了一个JSFiddle。这是你想要的?我正在检查至少一个输入是否有值..如果是或没有显示警报..但你可以编辑它来做你想做的事。

标签: jquery twitter-bootstrap validation


【解决方案1】:

我假设您有一个包含 4 个字段的注册表单,其中 3 个字段(用户名、电子邮件和联系人)是必填字段,并且密码字段是必填字段。

在您的页面中添加 jQuery validate.js

https://cdn.jsdelivr.net/npm/jquery-validation@1.19.1/dist/jquery.validate.js

HTML

<form id='register-form' action='#' method='post'>
   <label>Username</label>
   <input type='text' name='username' id='user_name' class='' />

   <label>Email</label>
   <input type='email' name='email' id='email_id' class='' />

   <label>Contact No</label>
   <input type='text' name='contact' id='contact_no' class='' />

   <label>Password</label>
   <input type='text' name='password' id='pass' class='' />

   <button type='submit'>Submit</button>
</form>

jQuery

// custom validation method
    $.validator.addMethod("require_any", function (value, element, param) {
        var is_filled=false; // flag to check input is empty or filled
        $.each(param.split(/\|/), function (i, input_id) { // split input ids
            if($('#'+ input_id).val()!==''){
                return is_filled=true; // if any empty input found break the loop
            }
        });
        return is_filled; 
    });
// submit form and apply validation rules
$('#register-form').submit(function (e) {
            e.preventDefault();

        }).validate({
            rules: {
              username: {
                 require_any: 'user_name|email_id|contact_no' //pass the ids
                 },
              email: {
                 require_any: 'user_name|email_id|contact_no', //pass the ids
                 email: true // for email validation
                 },
              contact: {
                 require_any: 'user_name|email_id|contact_no' //pass the ids
                 },
              password: {
                 required: true // password is required
                 }
            },
            messages: {
               require_any: 'Please provide one of Username or Email or Contact',
               required: 'Password field is required.' // by default message 'This field is required.'
            },
            submitHandler: function (form) {
                 // validation success code ...
               }
        });

【讨论】:

    猜你喜欢
    • 2017-06-02
    • 1970-01-01
    • 2020-08-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多