gpt4 book ai didi

javascript - Bootstrap 验证器 : How do you add and remove validators dynamically to an existing input field?

转载 作者:行者123 更新时间:2023-11-29 16:11:46 25 4
gpt4 key购买 nike

我有一个与 knockout.js 绑定(bind)并由 bootstrapValidator 验证的动态表单。

有一个输入字段需要根据另一控件的状态进行“必需验证”。

输入框:

<textarea id="inputReason" name="inputReason" rows="3" 
class="form-control col-lg-8"
data-bind="value: Reason" />

knockout-viewmodel的相关javascript部分:

self.SelectAbsenceType = function (absenceType) {
self.SelectedID(absenceType.ID);

if (self.SelectedAbsenceType().ReasonRequired) {
$('#formCreate').bootstrapValidator('addField', 'inputReason', {
validators: {
notEmpty: {
message: 'Please enter a reason'
}
}
});
} else {
$('#formCreate').bootstrapValidator('removeField', 'inputReason');
}
}

我面临的问题是,调用 bootstrapValidator 实例的 removeField 似乎并没有完全删除所有注册信息,因为 中存在 javascript 异常bootstrapValidator 类的 code>updateStatus 方法实际上根本不应该被调用,因为我之前已经删除了该字段:

var that  = this,
type = fields.attr('type'),
group = this.options.fields[field].group || this.options.group,
total = ('radio' === type || 'checkbox' === type) ? 1 : fields.length;

异常:无法获取属性“组”的值:对象为空或未定义

变量 field 包含值“inputReason”。

所以我的问题是这样的(因为 bootstrapValidators removeField 的文档对此并不完全清楚:How do I remove the dynamically added validation of the field inputReason completey?

(旁注:有人可以添加标签 boostrapvalidator 吗?)

最佳答案

好的,经过一些挖掘后,似乎 bootstrapValidator 插件还不支持删除附加到输入字段的验证器,该输入字段不会在同一进程中删除。因此,附加到触发验证的输入字段的事件并未取消注册。

临时解决方法是销毁 bootstrapValidator 实例,将表单的 data-* 属性设置为 null 并重新初始化插件。此代码替换 bootstrapValidator.removeField() 调用:

bootstrapValidator.destroy();

$('#formCreate').data('bootstrapValidator', null);

$('#formCreate').bootstrapValidator();

更新

另一种更好的方法是使用 bootstrapValidator 的启用/禁用功能:

bootstrapValidator
.enableFieldValidators
(
'inputReason',
self.SelectedAbsenceType().ReasonRequired
);

(感谢@nghuuphuoc 指出这一点)

关于javascript - Bootstrap 验证器 : How do you add and remove validators dynamically to an existing input field?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25639287/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com