jQuery 验证插件,将错误放入 Twitter Bootstrap native 元素中

标签 jquery jquery-validate validation

我正在使用 Twitter Boostrap,并尝试将 jQuery 验证插件错误放置在正确的元素中,而不是将每条消息硬编码在 HTML 中。

请参阅此处的 jsfiddle:http://jsfiddle.net/yaEaF/1/

$('#register').validate({
rules: {
    name: {
        minlength: 2,
        required: true
    },
    lname: {
        minlength: 2,
        required: true
    },
    username: {
        minlength: 2,
        required: true,
        remote: {
            url: '/setup/verify_username/',
            cache: false
        }
    },
    email: {
        required: true,
        email: true,
        remote: {
            url: '/setup/verify_email/',
            cache: false
        }
    },
    password: {
        required: true,
        minlength: 5,
        maxlength: 250
    },
    password2: {
        equalTo: '#password'
    },
    postal_code: {
        required: true,
        minlength: 5
    },
    timezones: {
        required: true
    },
    mp: {
        minlength: 10,
        required: true
    },
    gender: {
        required: true
    },
    dob: {
        required: true,
        date: true
    }
},
messages: {
    name: "Please enter your first name",
    lname: "Please enter your last name",
    username: {
        required: "Please enter a username",
        minlength: "Your username must consist of at least 2 characters"
    },
    email: "Please enter a valid email address",
    password: {
        required: "Please provide a password",
        minlength: "Your password must be at least 5 characters long"
    },
    password2: {
        required: "Please provide a password",
        minlength: "Your password must be at least 5 characters long",
        equalTo: "Please enter the same passwords"
    },
    postal_code: "Please enter a valid zip code",
    timezones: "Please select a time zone",
    mp: "Please enter a valid mobile number. Only numbers please.",
    gender: "Please select a gender",
    dob: "Please enter a valid Date of Birth in mm/dd/yyyy format."
},
highlight: function (element, errorClass, validClass) {
    $(element).closest('.control-group').removeClass('success').addClass('error');
},
unhighlight: function (element, errorClass, validClass) {
    $(element).closest('.control-group').removeClass('error').addClass('success');
},
success: function (label) {
    $(label).closest('form').find('.valid').removeClass("invalid");
},
errorPlacement: function (error, element) {
    error.text(element.closest('.control-group').find('.help-block'));
}
});

最佳答案

首先,清空内联代码中的所有消息,但保留 span 的位置,因为我们不想过多破坏您的布局。

<span class="help-block"></span> 

然后修改您的 errorPlacement 回调,如下所示...

errorPlacement: function (error, element) {
    element.closest('.control-group').find('.help-block').html(error.text());
}

现在将使用 .validate() 中定义的所有消息。请注意我如何用自动占位符 {0} 替换规则的值。

messages: {
    name: "Please enter your first name",
    lname: "Please enter your last name",
    username: {
        required: "Please enter a username",
        minlength: "Your username must consist of at least {0} characters"
    },
    email: "Please enter a valid email address",
    password: {
        required: "Please provide a password",
        minlength: "Your password must be at least {0} characters long",
        maxlength: "Your password must be less than {0} characters long"
    },
    password2: {
        equalTo: "Please enter the same passwords"
    },
    postal_code: "Please enter a valid zip code",
    timezones: "Please select a time zone",
    mp: "Please enter a valid mobile number. Only numbers please.",
    gender: "Please select a gender",
    dob: "Please enter a valid Date of Birth in mm/dd/yyyy format."
},

工作演示:http://jsfiddle.net/yaEaF/6/

关于jQuery 验证插件,将错误放入 Twitter Bootstrap native 元素中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14821404/

相关文章:

javascript - 页面加载时选中复选框并显示输出

javascript - 使用jquery取消确认后如何防止更改选择选项?

jQuery Validator addMethod 仅在第二次调用后工作

xml - 如何在 jquery 中验证 xml 字符串?

ruby - Kwalify YAML 验证 - 在键名中使用正则表达式?

asp.net - 如何将文本验证为有效的 HTML?

javascript - 仅在移动设备中加载脚本不起作用

javascript - 使用 d3 在移动设备上缩放触摸

jQuery 验证不评估所有字段

java - 在更改 Excel 中其他单元格值时更改单元格值 [通过 Apache POI 进行数据验证]