Вам нужны две вспомогательные функции:
Это небольшое расширение jQuery позволит вам узнать все val()
результаты набора элементов, получив их в виде массива:
$.fn.multipleVals = function() {
var result = new Array();
$(this).each(function() {
result.push($(this).val());
})
return result;
}
И этот поможет вам узнать, содержат ли два массива одинаковые элементы (это не одно и то же, если они равны или нет. Чтобы быть равными, оба должны иметь одинаковые элементы с одинаковыми ключами в одном порядке Мы не проверяем это):
function arraysSameElements(array1, array2) {
if(array1.length == array2.length) {
for(var i in array1)
if($.inArray(array1[i], array2) == -1)
return false;
return true;
}
return false;
}
Имея это, теперь вы можете сделать что-то вроде этого:
if (arraysSameElements($("form input:checkbox:checked").multipleVals(), ["A","B","C"]))
$('.result1').show(value);
else
$('.result1').hide(value);
В $("form input:checkbox:checked")
вы получаете все отмеченные флажки (: P) в form
. Затем с помощью multipleVals
вы помещаете все результаты .val()
в массив и сравниваете их с сформированным массивом, содержащим ответы, необходимые для отображения того или иного результата.
Удачи!