7

尝试要求两个下拉选择框在启用单击提交之前都有一个选择的选项。缺少什么不允许插件检查验证?

形式:

<form role="form" id="bootstrapSelectForm" class="form-horizontal">
  <div class="row">
  <div class="col-xs-6">
  <br>
      <h5>Region</h5>
        <select class="form-control" name="region" id="region" >
                   <option value="">Select a Region</option>
                   <option value="US">US</option>
                   <option value="UK">UK</option>
                   <option value="Sales Team">XS (Sales Team)</option>
                   <option value="Editorial Test">XT (Editorial Test)</option>
        </select>
    </div>
    <div class="col-xs-6">
    <br>
      <h5>Duration</h5>
        <select class="form-control" name="duration" id="duration" >
                   <option value="">Select a Duration</option>
                   <option value="5">5 Minutes</option>
                   <option value="10">10 Minutes</option>
                   <option value="15">15 Minutes</option>
                   <option value="20">20 Minutes</option>
                   <option value="25">25 Minutes</option>
                   <option value="30">30 Minutes</option>
        </select>
    </div>
    <div class="col-xs-6">
    <button type="submit" class="btn btn-default" id="submit">Submit</button>
    </div>
  </div>

引导验证器:

$(document).ready(function() {
$('#bootstrapSelectForm')
    .find('[name="region"]')
        .selectpicker()
        .submit(function(e) {
            $('#bootstrapSelectForm').bootstrapValidator('revalidateField', 'region');
        })
        .end()
    .find('[name="duration"]')
        .selectpicker()
        .submit(function(e) {
            $('#bootstrapSelectForm').bootstrapValidator('revalidateField', 'duration');
        })
        .end()
    .bootstrapValidator({
        feedbackIcons: {
            valid: 'glyphicon glyphicon-ok',
            invalid: 'glyphicon glyphicon-remove',
            validating: 'glyphicon glyphicon-refresh'
        },
        fields: {
            region: {
                validators: {
                    callback: {
                        message: 'Please select region',

                        }
                    }
                }
            },
            duration: {
                validators: {
                        message: 'Please select region.'
                }
            }
        }
    });
});
4

1 回答 1

9

为了使BootstrapValidator与其他插件一起工作,您应该遵循以下两条规则:

  1. 如果插件更改了字段可见性,请不要排除该字段

一些插件会隐藏您的字段并创建新元素来更改字段的外观。默认情况下,不会验证隐藏的、不可见的字段。因此,您需要设置

 excluded: ':disabled'

有关详细信息,请参阅排除选项。

  1. 如果插件动态更改其值,则重新验证该字段:

大多数插件在更改字段值后触发事件。通过使用这种事件处理程序,您需要要求 BootstrapValidator 重新验证该字段。

在您的情况下,您只需执行以下操作:

  • 添加excluded选项。
  • 使用notEmpty验证器而不是Callback验证器。
  • 而不是使用.submituse.change来在更改字段时重新验证字段。

见下面的代码:

$('#bootstrapSelectForm')
   .find('[name="region"]')
     .selectpicker()
       .change(function(e) {
         $('#bootstrapSelectForm').bootstrapValidator('revalidateField', 'region');
       })
       .end()
   .find('[name="duration"]')
     .selectpicker()
      .change(function(e) {
        $('#bootstrapSelectForm').bootstrapValidator('revalidateField', 'duration');
      })
      .end()
   .bootstrapValidator({
      feedbackIcons: {
         valid: 'glyphicon glyphicon-ok',
         invalid: 'glyphicon glyphicon-remove',
         validating: 'glyphicon glyphicon-refresh'
      },
      excluded: ':disabled', // <=== Add the excluded option
      fields: {
         region: {
            validators: {
               notEmpty: { // <=== Use notEmpty instead of Callback validator
                  message: 'Please select region'
               }
            }
         }
         duration: {
             validators: {
                notEmpty: { // <=== Use notEmpty instead of Callback validator
                   message: 'Please select region.'
                }
             }
         }
      }
   }
 });

有关详细信息,请参阅Bootstrap Select示例。

于 2014-12-05T22:27:02.703 回答