jquery验证addMethod无法正常工作

时间:2011-03-07 22:21:24

标签: jquery validation

如果满足条件,则以下代码会产生错误,但如果更正则不会删除错误类。基本上,如果选中“#MKDPT”并且未选中数组中的任何一个,则显示错误。如果检查了数组中的任何内容,请删除或不显示错误。

$.validator.addMethod('MKDPTOnly', function(value, element) {
            var ckd = ['AMX1N','BMFNP','BMFNB','CFE1N','CBEXR','CBT1','CBTQL','CME1','CMEQL','CMX1','DCMX1','DMERT','DMEDL','ERX1N','ERXXN','EXC1N','EXD1N','EXR1N','EXI1N','IPE1','KCB1','LME1','DLME1','MPL1','NDQ1N','NDQL2','CEC1','ICEFI','NYM1','DNYM1','NYMQL','NYS1N','NYSLM','PNK1P','PNK2N','SMX1', 'CNC1N','CNS1N','MTL1N','MTL2N','MTN1N','MTN2N','WEA1'];
            var otherChecked = $('#' + ckd.join(',#')).filter(':checked').length > 0;
             return !$(element).is(':checked') || otherChecked;
        }, 'Market Depth ($20) is only required with a Real Time Exchange.');

** * ** * ** EDIT * ** * ** * **** 现在我可以通过取消选中#MKDPT来删除类,但是单击任何var复选框都不会清除错误

$.validator.addMethod(
            'MKDPTOnly',
            function(value, element){
                var ckd = ['AMX1N','BMFNP','BMFNB','CFE1N','CBEXR','CBT1','CBTQL','CME1','CMEQL','CMX1','DCMX1','DMERT','DMEDL','ERX1N','ERXXN','EXC1N','EXD1N','EXR1N','EXI1N','IPE1','KCB1','LME1','DLME1','MPL1','NDQ1N','NDQL2','CEC1','ICEFI','NYM1','DNYM1','NYMQL','NYS1N','NYSLM','PNK1P','PNK2N','SMX1', 'CNC1N','CNS1N','MTL1N','MTL2N','MTN1N','MTN2N','WEA1'];
                if ($('#MKDPT').is(':checked') && $('#' + ckd.join(',#')).filter(':checked').length == 0) {
                    return false;
                } else { return true; }
            },'Market Depth ($20) is only required with a Real Time Exchange.');

1 个答案:

答案 0 :(得分:1)

我终于能够以一种野蛮的方式解决这个问题了。

我在包含错误元素“#MDC”的范围中添加了一个ID 这允许我通过它的父ID“#MDC”

来定位“p.error”

然后我在var ckd“.mdh”的所有复选框中添加了一个类

在我的JS文件中,我有上面的$ .validator.addMethod,如果选中“#MKDPT”,并且var ckd都没有显示p.error,并将类“.error”添加到“#MKDPT”复选框我遇到的问题是删除p.error并将“#MKDPT”从“.error”切换为“.valid”,以便继续使用表单。

我解决了这个问题:

$(".mdh").live('click', function(){
            if ($(".ex").is(":checked")) {                           
                $("#MKDPT").removeClass("error").addClass("valid");
                $("#MDC > p.error").hide();
                $("#MDerror").hide();
            } else {
                $("#MKDPT").removeClass("valid").addClass("error");
                $("#MDC > p.error").show();
                $("#MDerror").show();
            }
        });

所以现在如果“#MDKPT”有类“.error”并且显示了p.error,当你单击带有“.mdh”类的复选框时,它会删除类“.error”添加类“。有效的“隐藏”p.error“并允许你继续。如果取消选中或没有选中“.mdh”,则会显示错误,添加类“.error”并停止通过表单进展。效果很好,虽然我确信聪明的人有更好的解决方案。