2013-12-11 99 views
-1

我需要帮助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)){,and the end of the code}。

另外我想通过输入选择所有的测试单元选择全部取消选择。

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

+0

我可能以后会举一个例子,但现在只是一些意见: 1.绑定change事件为“点域的选择”这是不对的,它应该是“select.fields” 2. live是jQuery中不赞成使用的方法 – Merlin

+0

您是否在寻找这个:** http://jsfiddle.net/PLHSV/4/**(只是一个想法,告诉您如何对于行来说,你可以设计一个逻辑来类似地计算列) – Abhitalks

回答

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

相关问题