2010-07-12 36 views
1

嗨我有以下功能,我需要使其仅返回false时,其他两个复选框之一被选中。需要帮助inArray

$.validator.addMethod(
"ReutersNA", 
function(value, element) { 
    var selectedCountry = $("#Country").val(); 
    var NorthAmerica = new Array("USA","CAN","MEX"); 
    if($.inArray(selectedCountry,NorthAmerica) > -1) { 
    return true; 
    } else return false; 
    }, "Cannot select Reuters News outside of North America." 
); 

I need to add if($("#IQBAS, #IQPRE").is(":checked") && the above function = return true  

回答

1

你的意思是这样的吗?

$.validator.addMethod( 
"ReutersNA", 
function(value, element) { 
    var selectedCountry = $("#Country").val(); 
    var NorthAmerica = new Array("USA","CAN","MEX"); 
    return ($("#IQBAS, #IQPRE").is(":checked") && $.inArray(selectedCountry,NorthAmerica) > -1); 
}, 
"Cannot select Reuters News outside of North America." 
); 
+0

@ RightSaidFred如果不选择#IQBAS和or #IQPRE,这仍然会返回“Can not ...”。我需要它返回味精,只有当你检查IQBAS和或IQPRE – 2010-07-12 02:10:13

0

让我们试着成为一个小的通用...

$.validator.addMethod( 
"ReutersNA", 
function(value, element, params) { 
    var selectedCountry = value; 
    var NorthAmerica = new Array("USA","CAN","MEX"); 
    return (params && $.inArray(selectedCountry,NorthAmerica) > -1); 
}, 
"Cannot select Reuters News outside of North America." 
); 

,那么你可以使用它像

rules: { 
    Country : { 
     ReutersNA : $("#IQBAS, #IQPRE").is(":checked") 
    } 
} 
+0

我看到这是如何工作的,验证对参数被检查的规则....不幸的是,无论检查什么,它都会返回错误 – 2010-07-12 03:34:39

+0

...什么错误?? – Reigel 2010-07-12 03:52:12

0

你的问题有点不清楚。我认为你的意思是它应该返回false(显示消息),如果它被选中并且该元素不在数组中。

$.validator.addMethod( 
"ReutersNA", 
function(value, element) { 
    var selectedCountry = $("#Country").val(); 
    var NorthAmerica = new Array("USA","CAN","MEX"); 
    // Valid (true) if neither checked, or element is found in array. 
    return !$("#IQBAS, #IQPRE").is(":checked") || $.inArray(selectedCountry,NorthAmerica) > -1); 
}, 
"Cannot select Reuters News outside of North America." 
); 
+0

我得到这个错误 失踪;在陈述前 [打破这个错误] || $ .inArray(selectedCountry,NorthAmerica)> -1); \ n – 2010-07-12 03:33:53

+0

@Dirty,把这两个条件放在同一行(我只是调整了答案)。 – 2010-07-12 03:56:49