我正在使用引导验证器,并注意到插件的奇怪行为。
进行了此测试以确认我的怀疑:
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(),该插件不会使用新选项重新初始化自身。这种情况将来可能会改变。
答案是肯定的,是预期的行为。