如果满足条件,则以下代码会产生错误,但如果更正则不会删除错误类。基本上,如果选中“#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.');
答案 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”并停止通过表单进展。效果很好,虽然我确信聪明的人有更好的解决方案。