我想用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);
这不行,所以如果你能帮助我,那就太好了!
答案 0 :(得分:0)
所以,给定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/
希望这有帮助