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

时间:2017-07-13 05:21:51

标签: jquery validation twitter-bootstrap-3 bootstrapvalidator jqbootstrapvalidation

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

我将$('#form1').bootstrapValidator();添加到change()的末尾,但没有运气。任何想法真的很感激。

从这里查看小提琴: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");
            }
        });
});

1 个答案:

答案 0 :(得分:1)

最后我发现了问题: -

实际上代码: -

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

不会更改第二个选择框中的值(虽然它显示该值已更改)。这就是为什么它在错误发生后不会继续进行的原因。

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

所以改变上面这一行: -

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

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

参考: - change()