我正在使用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发布了这个问题。
有人可以告诉我这是否正确?
答案 0 :(得分:0)
插件创建者的回复:
您已经使用
初始化了没有自定义验证程序的插件var $form = $(form) .appendTo('#qunit-fixture') .validator()
如果再次调用.validator(),插件不会使用新选项重新初始化。这可能在将来发生变化。
答案是肯定的,是预期的行为。