javascript - 复选框和 radio 的 JQuery 验证插件问题

标签 javascript jquery jquery-validate

当输入或选择字段发生验证错误时,插件会向其添加错误类,因此在 css 中我可以有类似的内容:

.error { border: 2px solid red; }

但这不适用于复选框和 radio ,因为某些浏览器不允许对这些类型的元素进行样式设置。因此,对于这两种类型的元素,我希望包含它们的 block 类的 div 被赋予错误类。所以它在错误时看起来像这样:

<div class="block error">
    <input type="checkbox" name="something" class="error" /> Something
</div>

如何扩展插件来实现这一点?

伪代码:

$.validator.addClassRules('checkboxOrRadioError', {
   onError: function() {
       $(this).parents('.block').addClass('error');
   }
});

最佳答案

您可以使用 errorPlacement 回调来覆盖错误的默认位置,或者将 highlight 回调与 unhighlight 结合使用。您现在可以控制发生的事情,但必须写下所有条件

例子:

$('form').validate(function() {

    highlight: function(element, errorClass) {
        var $el = $(element);
        if ($el.is(':radio') || $el.is(':checkbox')) {
            $el.closest('.block').addClass(errorClass)

        } else { 
                /* add code for default*/
        }

    },

    unhighlight: function(element, errorClass) { 
                /* code to reverse the above*/
    }
})​

关于javascript - 复选框和 radio 的 JQuery 验证插件问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12999176/

相关文章:

javascript - 如何一键禁用 anchor 标记

javascript - 我可以编译加载的 Handlebars 模板吗?

asp.net - Jquery 验证插件是否需要表单标签?

jQuery UI 对话框中的 jQuery Validate 远程方法仅有效一次

javascript - 获取加载 Web Worker 失败的 HTTP 状态代码

javascript - 将数组理解转换为 `map` 和 `filter`

javascript - 如何使用 post (ajax) 执行 IF/ELSE?

javascript - 在 jQuery 中比较两个字符串不起作用

javascript - JQuery 验证日期范围内的日期

javascript - 单击按钮时会加载一个javascript文件