Bootstrap Validator 在通过 jquery 设置值后仍然显示错误消息

Bootstrap Validator still shows error message after setting value through jquery

我正在通过 jquery change() 更改基于另一个下拉列表 02 的下拉列表 01 的值。我已经对表单实施了 BootsrapValidation()。我的问题是如果下拉列表 01 显示必填字段错误消息,然后我从 jquery 设置下拉列表 01 值。但是错误信息仍然存在。

我在 change() 的末尾添加了 $('#form1').bootstrapValidator();,但没有成功。任何想法真的很感激。

从这里检查 fiddle:https://jsfiddle.net/k2vtkka1/5/

这是我的代码。

$(document).ready(function() {


$('.subSort').change(function(){;
    var sub_code = $(this).val();
    var code_id = $(this).attr("id");

    var code_prefix = sub_code.substring(0, 4);
    var id_prefix = code_id.substring(4, 5);

    var new_sub_code = code_prefix+'102';
    var new_id_no = parseInt(id_prefix)+1;

    $('#sub_'+new_id_no).val(new_sub_code);
    $('#update_student_form').bootstrapValidator();
});


$('#update_student_form').bootstrapValidator({
    feedbackIcons: {
        valid: 'glyphicon glyphicon-ok',
        invalid: 'glyphicon glyphicon-remove',
        validating: 'glyphicon glyphicon-refresh'
    },
    fields: { 
            sub_6: {
            validators: {
                notEmpty: {
                    message: 'Please select main sub 01 derived'
                }
               }
            }
        }
    })


    .on('success.form.bv', function(e) {
            $('#update_student_form').data('bootstrapValidator').resetForm();

        e.preventDefault();

        var $form = $(e.target);
        var bv = $form.data('bootstrapValidator');

        // Use Ajax to submit form data
        $.post($form.attr('action'), $form.serialize()).done(function(data) {
            if (data.trim().length >0)
            {
                $('#error_message').slideDown({ opacity: "show" }, "slow");
            }
            else {
                $('#success_message').slideDown({ opacity: "show" }, "slow");
            }
        });
});

终于找到问题了:-

实际代码:-

$('#sub_'+new_id_no).val(new_sub_code);

没有更改第二个 select-box 中的值(尽管它显示该值已更改)。这就是为什么在出现错误后它没有继续进行的原因。

您需要在那里触发 change() 以便它实际更改值,然后您的验证器会得到它。

因此将上面的行更改为:-

$('#sub_'+new_id_no).val(new_sub_code).change();

工作示例:-https://jsfiddle.net/fn0r4nvh/

参考:- change()