【问题标题】:How to count the number of the same value in select input如何计算选择输入中相同值的数量
【发布时间】:2013-12-11 17:03:45
【问题描述】:

各位,我需要 jquery 方面的帮助。我有这张桌子http://jsfiddle.net/msx20/PLHSV/1/

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

  • colcountPlus、colcountMinus、colcountN - 用于当前列选择相同值的汇总数

  • 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)) { 和代码末尾}。

我还想通过输入选择取消全选来选择所有测试单元格。

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

【问题讨论】:

  • 我可能稍后再举个例子,但现在只是一些 cmets: 1. 你将一个更改事件绑定到“.fields select”这是不对的,它应该是“select.fields” 2. live是 jQuery 中不推荐使用的方法
  • 您是否在寻找这个:jsfiddle.net/PLHSV/4(只是向您展示如何对行执行此操作的一个想法。您可以设计一个类似的逻辑来计算列)跨度>

标签: jquery html jquery-selectors


【解决方案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

【讨论】:

    猜你喜欢
    • 2018-05-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-04
    • 2020-06-01
    相关资源
    最近更新 更多