Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/457.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript bootstrapValidator:如何在现有输入字段中动态添加和删除验证程序?_Javascript_Jquery_Knockout.js_Twitter Bootstrap 3_Jqbootstrapvalidation - Fatal编程技术网

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”

所以我的问题是(因为bootstrapValidators
removeField
的文档在这一点上并不完全清楚:我如何删除动态添加的字段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
     );