10

我有一个包含这个字段的表格:

<form id="formdelivery" class ="form-horizontal form-custom">
    <fieldset>
        <input name="delivery" type="text" class=""  value="">
    </fieldset>
</form>

输入字段的值可以通过单击按钮从另一个输入中复制:

   $('#copy').click(function () {
        $('[name=delivery]').val($('[name=billing]').val());
        var res = $('#formdelivery').data('bootstrapValidator').validate();
        if (res.$invalidFields.length == 0) {
            alert("ok");
        }
        else {
            alert("no");           
        }
    });

应用于该字段的验证是这样的:

$('#formdelivery').bootstrapValidator({
       fields: {
            delivery: {
                message: 'Invalid',
                validators: {
                    notEmpty: {
                    },
                    stringLength: {
                        min: 2,
                        max: 100,
                        message: 'you need almost 2 chars and not more than 100'
                    }
                }
            }
});

问题是单击复制按钮,引导验证器会忽略使用 jQuery 代码复制的新值$('[name=delivery]').val($('[name=billing]').val());

我做错了什么还是这是一个问题?

4

4 回答 4

9

正如 Youness 所建议的,我 $('[name=delivery]').change();在更新输入内容后添加了验证。

然后我将触发线添加到引导验证器初始化中:

$('#formdelivery').bootstrapValidator({
       fields: {
            delivery: {
                trigger: 'change keyup',
                ...

通过这种方式,验证也在更改事件上完成。

于 2014-08-11T08:43:23.703 回答
4

将值放入其中后尝试添加:

 $('[name=delivery]').change();
于 2014-08-11T08:16:48.120 回答
2

设置值后,只需在表单上调用 revalidateField($field),在使用 html 属性 data-bv-x 进行验证时也可以使用

于 2015-06-26T17:02:13.793 回答
1

在 html5 中添加 data-bv-trigger:

<input name="delivery" type="text" class=""  value="" data-bv-trigger="change keyup">

并在您以编程方式更改值后触发更改事件:

$('[name=delivery]').change();
于 2016-06-10T07:19:55.010 回答