提交价值

时间:2013-10-07 07:56:20

标签: javascript jquery checkbox

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

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

1 个答案:

答案 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/

希望这有帮助