如何计算选择输入中相同值的数量

时间:2013-12-11 08:39:40

标签: jquery html jquery-selectors

伙计们我需要帮助jquery。我有这张表http://jsfiddle.net/msx20/PLHSV/1/

我想要动态地计算一行中选择输入中相同值的数量,并在指定类的表格单元格中显示结果。

  • colcountPlus,colcountMinus,colcountN - 用于当前列的select的相同值的摘要编号

  • rowcountPlus,rowcountMinus,rowcountN - 表示当前行选择的相同值的摘要编号

我尝试在jQuery中创建它,但我的代码根本不起作用,我的代码

  $(document).ready(function () {
    $('.fields select').change(function () {
        getCount($(this));
    });



    function getCount() {
        var count = 0;
        $(':selected .fields').live('click', function (.val)) {
            if ($(this).val() == '+') {
                count++;
                $('tr td:first .rowcountPlus').text(count);
            } else if ($(this).val() == '-') {
                count++;
                $('tr td:first .rowcountMinus').text(count);
            } else if ($(this).val() == 'N') {
                count++;
                $('tr td:first .rowcountN').text(count);
            } else if ($(this).val() == '+') {
                count++;
                $('tr td:first .colcountPlus').text(count);
            } else if ($(this).val() == '-') {
                count++;
                $('tr td:first .colcountMinus').text(count);
            } else if ($(this).val() == 'N') {
                count++;
                $('tr td:first .colcountN').text(count);
            }
        });
}

但它根本没用,我有错误:$(':selected。fields')。live('click',function(.val)){,并且在代码的末尾}。< / p>

此外,我想通过输入选择取消全选来选择所有测试单元。

有人可以帮我这个代码吗?我已经搜索了堆栈,但我还没有发现任何类似的问题。

1 个答案:

答案 0 :(得分:1)

尝试

jQuery(function () {
    var $table = $('table'),
        $trPlus = $table.find('tbody tr:nth-last-child(3)'),
        $trMinus = $table.find('tbody tr:nth-last-child(2)'),
        $trDeny = $table.find('tbody tr:nth-last-child(1)');

    $table.find('select').change(function () {
        var $this = $(this),
            column = $(this).parent().index(),
            $tr = $(this).closest('tr'),
            $rowels = $tr.find('select'),
            $colels = $table.find('tbody td:nth-child(' + (column + 1) + ') select');

        var rowt = total($rowels);
        $tr.find('.countPlus').text(rowt['+'] || 0);
        $tr.find('.countMinus').text(rowt['-'] || 0);
        $tr.find('.countDeny').text(rowt['n'] || 0);

        var colt = total($colels);
        $trDeny.find('td:nth-child(' + (column - 1) + ')').text(colt['n'] || 0);
        $trMinus.find('td:nth-child(' + (column - 1) + ')').text(colt['-'] || 0);
        $trPlus.find('td:nth-child(' + (column - 1) + ')').text(colt['+'] || 0);
    });
    //to initialize the table
    $table.find('tbody tr:nth-child(2) select').change();

    function total($selects) {
        var totals = {};
        $selects.each(function () {
            var val = this.value;
            totals[val] = (totals[val] || 0) + 1;
        });
        return totals;
    }
});

演示:Fiddle