如果文本框输入值发生变化,请验证字段....但如果... Javascript

If text box input value changes, validate the field.... but if... Javascript

我正在尝试使用 formvalidation.io 中的 formvalidator 验证一些字段,但 运行 使用它时遇到了一些问题。我需要查明文本框(日期、电话、电子邮件)是否有值(用户填写了文本框)并验证该字段。但如果用户没有填写文本框,则不验证该字段。用户可能会开始填写文本框,然后删除其内容,如果他们这样做,则不应验证该字段。谁能帮我解决这个问题?

我已经尝试了一些不同的技术,例如 addEventListener 等,但我还没有完全理解我需要它的方式。

这是我目前拥有的示例。

   $("#Q_dob_text").change(function () {
    var dob = document.getElementById('Q_dob_text').value;
    if (dob !== '') {
        $('#registry').formValidation({
            framework: 'bootstrap',
            icon: {
                valid: 'glyphicon glyphicon-ok',
                invalid: 'glyphicon glyphicon-remove',
                validating: 'glyphicon glyphicon-refresh'
            },
            fields: {
                dob: {
                    validators: {
                        date: {
                            format: 'MM/DD/YYYY',
                            message: 'The value is not a valid date'
                        }
                    }
                }
            }
        });
    }
});

我也试过这个的变体...

 document.getElementById('Q_date_text').addEventListener("keydown", dateFx);
    function dateFx() {
        var date = document.getElementById('Q_date_text');
        if (date !== '') {
            $('#registry').formValidation({
                framework: 'bootstrap',
                icon: {
                    valid: 'glyphicon glyphicon-ok',
                    invalid: 'glyphicon glyphicon-remove',
                    validating: 'glyphicon glyphicon-refresh'
                },
                fields: {
                    date: {
                        validators: {
                            date: {
                                format: 'MM/DD/YYYY',
                                message: 'The value is not a valid date'
                            }
                        }
                    }
                }
            });
        }
    }

非常感谢任何帮助!

出问题的是 .formValidation 调用初始化(绑定)插件以始终验证,因此一旦您 运行 该代码一次,它将始终保持工作(即使尽管用户删除了输入的文本)。

你真正想要做的是初始化它一次,并更新它的验证设置(在 validators 设置中)使其不验证 dob (来自你的第一个例子)如果它是空的。您可以通过调用 "updateOption" 或 "removeField" 来实现,请参阅 documentation.