2

我正在通过 jquery 根据另一个下拉列表 02 更改下拉列表 01 的值change()。我已经在表单中实现了 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");
            }
        });
});
4

1 回答 1

1

最后我发现了问题:-

实际上代码: -

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

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

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

所以用这个改变上面的行: -

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

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

参考:-改变()

于 2017-07-14T06:04:52.890 回答