Jquery 验证消息作为占位符在您键入时不会清除

标签 jquery forms jquery-validate placeholder

我已经有了这个移动表单,我正在使用 jQuery 验证,到目前为止,我已经设法使其与 .error 元素作为占位符一起工作,问题是它不断在放置中给出错误消息,因此确实如果我输入它实际上确实适用于电子邮件和密码字段,则不想添加 .valid 类!

Here is the fiddle.

JS

$(document).ready(function() {

    $("#ValidateOrderRegistration").validate({

            rules: {
                FirstName: {
                    required: true,
                    minlength: 1
                },
                LastName: {
                    required: true,
                    minlength: 1
                },
                Username: {
                    required: true,
                    minlength: 2
                },
                Password: {
                    required: true,
                    minlength: 6
                },
                PasswordConfirm: {
                    required: true,
                    minlength: 6,
                    equalTo: "#f-password"
                },
                EmailAddress: {
                    required: true,
                    email: true
                },
            },

            messages: {   
                FirstName: {
                    required: "Please enter your First Name",
                    minlength: "Please enter at least 2 characters",
                },
                LastName: {
                    required: "Please enter your surname",
                    minlength: "Please enter at least 2 characters",
                },
                Password: {
                    required: "Enter a 6 or more digits password",
                    minlength: "At least 6 characters"
                },
                PasswordConfirm: {
                    required: "Confirm Password Password",
                    minlength: "Your password must be at least 6 characters"
                },
                EmailAddress: {
                    required: "Enter an Email",
                    email: "Not Valid"
                },
            },

            errorPlacement: function(error, element) {
                element.val(error[0].outerText);     
            }, //Puts errors as placeholders

        }) //add rules
    $(this).find("input[type=text]").each(function() {
            if ($(this).attr("placeholder") == $(this).val())
                $(this).val("");
        }) //validate everything
    $('.cat_textbox').on('click focusin', function() {
        this.value = '';
    }); //cleans fields
    $('#EmailAddress').on('click', function() {
        $('#EmailAddress .error').removeClass('error');
        $(this).addClass('success');
    }); //I tried this!
    $("#EmailAddress").click(function(e) {
        var email = $("#EmailAddress");
        var emailaddressVal = $("#EmailAddress").val();
        var emailReg = /^[A-Z0-9._%+-]+@([A-Z0-9-]+\.)+[A-Z]{2,4}$/i;


        if (!emailReg.test(email.val())) {
            email.addClass("error").focus();

        } else {

            email.removeClass("error");
        } //
        return false;
    });
}); //MAIN VALIDATION

最佳答案

您当前正在将错误消息设置为元素的实际值。将其设置为占位符将在您单击该元素后将其删除,并且插件会在验证成功时自动删除错误类。

errorPlacement 更改为:

errorPlacement: function (error, element) {
    element.attr("placeholder", error[0].outerText);
}

关于Jquery 验证消息作为占位符在您键入时不会清除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26326942/

相关文章:

javascript - 可拖动元素上的 z-index 堆叠问题(jQuery UI)

jquery - jQuery 验证插件的 showErrors() 函数

jquery - 自定义 jQuery Accordion - 滚动到事件面板的顶部

javascript - html 表单 : input requierd if Select>optinon selected

jquery - 从submitHandler函数中获取jQuery验证器对象

javascript - jQuery 父级中的每个字段

CSS :after used to make arrow for links not working for submit button

javascript - 提交特定表单而不使用页面中存在的 javascript

javascript - jQuery validate() 用于具有相同名称、不同值的单选按钮

javascript - Jquery 验证多个条件