1

我想用 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);

这不起作用,所以如果你能帮助我,那就太好了!

4

1 回答 1

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/

希望这可以帮助

于 2013-10-07T08:13:08.240 回答