引导验证程序自定义函数仅在销毁后存在.此行为是否在意料之中



我正在使用引导验证器,并注意到插件的奇怪行为。

进行了此测试以确认我的怀疑:

  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')
  })

结果是第一个断言通过,第二个断言没有。

并且还发现"破坏"是一种解决方法,这让我更加烦恼。

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

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

插件创建者的响应:

您已经在没有自定义验证器的情况下初始化了插件

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

如果您再次调用 .validator(),该插件不会使用新选项重新初始化自身。这种情况将来可能会改变。

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

相关内容

最新更新