【问题标题】:jQuery Validation with inline-block errors带有内联块错误的 jQuery 验证
【发布时间】:2012-02-07 01:47:55
【问题描述】:

我的验证脚本工作正常,但我使用了内联块错误并隐藏了它们。当 jQuery Validation 插件将它们切换回来时,我猜它使用 show 会根据标签抛出内联 display:block 或 display:inline 样式。我需要做的是让它显示:inline-block。有没有办法在 jQuery Validate 显示错误后将 css 选择器附加到每个字段?

这是一个sn-p。

$(document).ready(function() {
$("#applicationForm").validate({
    errorElement: 'span',   
    errorContainer: $('.error'),
    rules: {
        email: {
            required: true,
            email: true
        },
        emailVerify: {
            required:true,
            email:true,
            equalTo: "#email"
        }
    }
});
});

【问题讨论】:

    标签: jquery validation


    【解决方案1】:

    我不是 100% 清楚您需要做什么,但您可以通过实现 showErrors 函数来覆盖验证插件如何处理显示错误。

    默认的看起来基本上是这样的:

    showErrors: function(errorMap, errorList) {
        for (var i = 0; this.errorList[i]; i++) {
            var error = this.errorList[i];
            this.showLabel(error.element, error.message);
    
            this.settings.highlight && this.settings.highlight.call(this, error.element, this.settings.errorClass, this.settings.validClass);
        }
        if (this.errorList.length) {
            this.toShow = this.toShow.add(this.containers);
        }
        if (this.settings.success) {
            for (var i = 0; this.successList[i]; i++) {
                this.showLabel(this.successList[i]);
            }
        }
        if (this.settings.unhighlight) {
            for (var i = 0, elements = this.validElements(); elements[i]; i++) {
                this.settings.unhighlight.call(this, elements[i], this.settings.errorClass, this.settings.validClass);
            }
        }
        this.toHide = this.toHide.not(this.toShow);
        this.hideErrors();
        this.addWrapper(this.toShow).show();
    }
    

    听起来您的偏好是将最后一行更改为其他内容。

    实现invalidHandler 并让该函数查找错误元素并适当地更改它们的显示属性可能更简单。

    【讨论】:

    • showErrors 有效,但 invalidHandler 没有。添加 css 内联块会立即打开所有错误。将此函数粘贴到我的验证器选项中,通过添加 this.addWrapper(this.toShow).css({'display' : 'inline-block'}); 来完成我想要的。到最后一行。我仍然希望有一种更清洁的方法来解决这个问题,但很高兴它也能按照我需要的方式工作。谢谢。
    • 是的,我注意到一些关于 SO 的问题需要摆弄“默认”showErrors 功能。我认为在某种程度上,它不可能对所有人都适用,但对于您的特殊情况,我可以看到添加选项来处理 如何 显示/隐藏。
    猜你喜欢
    • 2014-12-16
    • 2011-12-17
    • 2015-05-17
    • 1970-01-01
    • 2019-12-01
    • 2013-11-19
    • 1970-01-01
    • 2012-11-22
    • 1970-01-01
    相关资源
    最近更新 更多