JQuery验证插件禁用属性错误 [英] Jquery validate plugin disabled attribute bug

查看:5
本文介绍了JQuery验证插件禁用属性错误的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一组html输入:复选框项。其中一项具有已禁用属性。 预期的行为是,jQuery验证插件将忽略已禁用属性的输入,但将处理未禁用的其他元素的验证。

<input type="checkbox" name="example[]" value="1" minlength="1" required="required" disabled="disabled" />
<input type="checkbox" name="example[]" value="2" minlength="1" required="required" />
<input type="checkbox" name="example[]" value="3" minlength="1" required="required" />

我已经创建了一个活生生的示例来演示该行为。http://jsfiddle.net/cVMBA/24/

预期行为是在本例中至少选中了一个复选框。如果不是,则应出现错误。 尽管在我看来,他的行为真的很奇怪。如果您查看控制台,您可以看到,首先触发了errorPlacement函数,然后触发了unHighlight函数。所以这里的问题是没有显示错误。

当您删除属性Disable="Disable"时,插件将正常工作。 有什么想法,或者可能是黑客来推翻这一行为?

推荐答案

插件在disabled="disabled"属性方面工作正常,如下所示:http://jsfiddle.net/4fShN/

关于您的代码:

$('#test_validate').validate({
    ignore : [],
    unhighlight : function(element, errorClass, validClass){
         $('#test_validate').removeClass('error-highlighted');
    },
    errorPlacement: function(error, element) {           
        $('#test_validate').addClass('error-highlighted').find('.error-div').text('Select radio button');
    },
    submitHandler: function(form) {
            alert('form ok');
    }
});
您缺少highlight回调函数,它是unhighlight回调函数的补充。您应该注意到,errorPlacement仅在最初放置错误label元素时触发。如果要随错误一起切换,则应使用highlightunhighlight函数。

此外,您的代码将类应用于$('#test_validate'),它包含<form>元素的id。通常,使用包含的element参数从<input>元素中应用&;删除出现错误的类。

    highlight : function(element, errorClass, validClass){
        $(element).addClass('error-highlighted');
    },
    unhighlight : function(element, errorClass, validClass){
        $(element).removeClass('error-highlighted');
    },
为了更简单,只需定义validClasserrorClass选项即可删除上述代码。为什么它们可以被移除呢?因为上述两个函数与默认插件行为基本相同。

errorClass: "error-highlighted",
validClass: "valid"

参见文档http://jqueryvalidation.org/validate

这篇关于JQuery验证插件禁用属性错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆