如果文本框输入值发生更改,请验证字段....但是如果... Javascript

时间:2015-02-24 14:26:08

标签: javascript jquery html validation

我正在尝试使用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'
                            }
                        }
                    }
                }
            });
        }
    }

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:1)

出现问题的是.formValidation调用初始化(绑定)插件以始终验证,因此只要您运行该代码一次,它就会始终保持正常工作(甚至虽然用户删除了输入的文本。)

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