2010-07-12 4 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 Это все еще возвращает «Can not ...», если вы не выбрали # IQBAS и #IQPRE. Мне нужно, чтобы он возвращал msg только в том случае, если вы проверили IQBAS и IQPRE –

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

. Я вижу, как это работает, проверяя правило против проверяемого параметра .... К сожалению, он возвращает ошибку, независимо от того, что проверяется. –

+0

... что ошибка?? – Reigel

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

Я получаю это сообщение об ошибке missing; перед оператором [Прерывать эту ошибку] ​​|| $ .inArray (selectedCountry, NorthAmerica)> -1); \ n –

+0

@ Dirty, поставьте два условия в одну строку (я просто подстроил ответ, чтобы сделать это). –