我想用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/

希望这可以帮助

10-06 07:52