jQuery Validate插件:电子邮件验证仅在模糊时发生

时间:2015-08-04 15:36:41

标签: javascript jquery jquery-plugins

解决:我检查了我的jquery-validate.js版本,发现它首先没有实现onkeyup处理程序。我正在使用1.12 Opre。我不知道为什么它没有包含那个处理程序,因为从我在github上看到的,onkeyup的功能在2013年可用。也许我从某个地方得到了一个糟糕的分支。所以,我所做的只是更新到1.14,一切都按预期工作。

更新:经过更多研究后,我意识到问题更多的是关于验证没有在“onkeyup”上完成,jQuery Validate Plugin应该默认执行。

也许这就是我使用jQuery validate插件的方式,但是如果我输入无效的电子邮件,我会在输入下方显示一个红色警报区域:

var validationPluginDefaults = {
ignore: [],
errorElement: 'p', //default input error message container <p>
errorClass: 'text-error', // default input error message class
focusInvalid: true, //focus on the first invalid field
messages: {},
invalidHandler: function (event, validator) { //display error alert on form submit 

},
highlight: function (el) { // hightlight error inputs
    //jQuery(el).closest('.control-group').addClass('error'); // set error class to the control group
},
success: function (err, el) {
    jQuery(el).next(".text-error").hide();
    jQuery(el).next(".text-error").remove();


},
errorPlacement: function (error, element) {
    error.insertAfter(element);
},
onfocusin: function () {},
onfocusout: function () {}

};

当我更正电子邮件并直接点击我的提交按钮(不触发onb​​lur事件)时,先前的错误字段将被删除,然后表单跳转...让我错过了正确的命中。

这是我的验证规则:

var validator = jQuery.extend(validationPluginDefaults,{
    rules: {
        loginName: {
            required: true,
            email: true,
        },
        firstName: {
            minlength: 2,
            onlyAlphaAndHyphen: true,
            required: true,
        },
        lastName: {
            minlength: 2,
            required: true,
        },
        email: {
            required: true,
            email: true,
            equalTo: "#loginName",
        }
    }
});

以下是我在函数中触发它的方法:

$("#updateUserForm").validate(validator);


    if ($("#updateUserForm").valid()){

现在我知道你通常不会在.valid()之前调用.validate(),并且你应该在页面加载时调用它。但是我继承了某人糟糕的代码,这就是我到目前为止所做的。无论如何,我尝试了另一种方式,我仍然看到了错误。

在文本更改事件期间无法完成此电子邮件验证,因此我不必退出该字段吗?

1 个答案:

答案 0 :(得分:1)

您是否尝试过使用onChange事件来实现此目的?

$("#updateUserForm").on('change', 'input', function() { $(this).validate(validator); });

相关问题