我想用xy结果创建表格
例如,仅选中“ A”可能会产生结果1,而如果同时选中“ A”和“ B”,那么答案就是结果2。D,E,A可能得出结果3,而B,E,A得出结果2。希望你明白这一点。
<form action="">
<input type="checkbox" name="options" value="A" />Choice A<br />
<input type="checkbox" name="options" value="B" />Choice B<br />
<input type="checkbox" name="options" value="C" />Choice C<br />
<input type="checkbox" name="options" value="D" />Choice D<br />
<input type="checkbox" name="options" value="E" />Choice E<br />
<br />
<input type="submit" value="answer">
而jQuery将是沿着这些路线
$(':checkbox').click(function () {
var value = $(this).val();
if ($(this).val(["A","B","C"]).is(':checked'))
$('.result1').show(value);
else
$('.result1').hide(value);
if ($(this).val(["A","D","E"]).is(':checked'))
$('.result2').show(value);
else
$('.result2').hide(value);
这不起作用,所以如果您能帮助我,那就太好了!
最佳答案
因此,给定A,B和C,您想做点什么。这与可能会做其他事情的A,B和E不同。我想出了这个:
$(':checkbox').click(function () {
var checkedBoxes = $(':checked');
var values = new Array();
$.each(checkedBoxes, function(index, value) {
var checkboxValue = $(value).val();
values.push(checkboxValue);
});
if (containsOnly(values, ['A', 'B', 'C'])) {
alert('Hi');
}
if (containsOnly(values, ['A', 'D', 'E'])) {
alert('Bye');
}
});
function containsOnly(needles, haystack){
if (needles.length !== haystack.length) {
return false;
}
var result = _.intersection(needles, haystack).length === haystack.length;
return result;
}
因此,它要做的是捕获所有选中的复选框,然后捕获其中包含的值。一旦有了值,就使用UnderscoreJS(underscorejs.org)交集比较它们。这意味着我们可以检查数组中是否包含(也只有)所有值。
检查完成后,如果满足条件,它将执行某些操作。
另外,为什么要强调js?它为JavaScript提供了许多非常有用的类似LINQ的表达式,并且省去了您的负担。迭代器功能绝对值得,因为它可以节省您的时间和精力。
和往常一样,小提琴:http://jsfiddle.net/KyleMuir/bUdra/5/
希望这可以帮助