Javascript bootstrapValidator:如何在现有输入字段中动态添加和删除验证程序?
我有一个动态表单,它与Javascript bootstrapValidator:如何在现有输入字段中动态添加和删除验证程序?,javascript,jquery,knockout.js,twitter-bootstrap-3,jqbootstrapvalidation,Javascript,Jquery,Knockout.js,Twitter Bootstrap 3,Jqbootstrapvalidation,我有一个动态表单,它与knockout.js绑定,并由bootstrapValidator验证 有一个输入字段需要根据另一个控件的状态进行“必需验证” 输入字段: <textarea id="inputReason" name="inputReason" rows="3" class="form-control col-lg-8" data-bind="value: Reason" /> 我面临的问题是,调用bootstrapValidat
knockout.js绑定,并由bootstrapValidator
验证
有一个输入字段需要根据另一个控件的状态进行“必需验证”
输入字段:
<textarea id="inputReason" name="inputReason" rows="3"
class="form-control col-lg-8"
data-bind="value: Reason" />
我面临的问题是,调用bootstrapValidator
实例的removeField
似乎并没有完全删除所有注册信息,因为bootstrapValidator
类的updateStatus
方法中存在一个javascript异常,实际上根本不应该调用它,因为我在以下操作之前,已删除该字段:
var that = this,
type = fields.attr('type'),
group = this.options.fields[field].group || this.options.group,
total = ('radio' === type || 'checkbox' === type) ? 1 : fields.length;
异常:无法获取属性“组”的值:对象为null或未定义
变量字段
包含值“inputReason”
所以我的问题是(因为bootstrapValidatorsremoveField
的文档在这一点上并不完全清楚:我如何删除动态添加的字段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指出这一点)根据按下的提交按钮,有没有办法启用/禁用验证程序字段?
bootstrapValidator
.enableFieldValidators
(
'inputReason',
self.SelectedAbsenceType().ReasonRequired
);