Bootstrap验证器自定义功能仅在销毁后出现。这种行为有望吗?

时间:2017-01-16 16:59:59

标签: twitter-bootstrap validation

我正在使用bootstrap-validator并注意到插件的一个奇怪的行为。

做了这个测试以确认我怀疑的是什么:

  QUnit.test('call custom validator', function (assert) {

      var form = '<form>'
  + '<div class="form-group has-error">'
  + '<input type="text" value="example" data-validation1 data-validation2>'
  + '<input type="text" value="mobilephone" data-requiredone="phone">'
  + '<div class="help-block with-errors">Fill at least one</div>'
  + '</div>'
  + '</form>'

      var $form = $(form)
        .appendTo('#qunit-fixture')
        .validator()

      var options1 = {
          custom: {
              validation1: function (element) { }
          }
      }

      var options2 = {
          custom: {
              validation2: function (element) { }
          }
      };

      var form = $('form').validator(options1)

      var validator = $(form).data("bs.validator")

      assert.ok(validator.options.custom.validation1 && validator.options.custom.validation1.toString() == options1.custom.validation1.toString(), 'validator.options.custom contains validation1')

      $('form').validator('destroy')

      $('form').validator(options2)

      validator = $("form").data("bs.validator")

      assert.ok(validator.options.custom.validation2 && validator.options.custom.validation2.toString() == options2.custom.validation2.toString(), 'validator.options.custom contains validation2')
  })

results是第一个断言传递,第二个不传递。

并且还发现'破坏'是一种解决方法,更让我烦恼的是什么。

我还在项目的github发布了这个问题。

有人可以告诉我这是否正确?

1 个答案:

答案 0 :(得分:0)

插件创建者的回复:

  

您已经使用

初始化了没有自定义验证程序的插件
  var $form = $(form)
    .appendTo('#qunit-fixture')
    .validator()
     

如果再次调用.validator(),插件不会使用新选项重新初始化。这可能在将来发生变化。

答案是肯定的,是预期的行为。