Скрипт подсветки подходящих значений в талице


/ Published in: JavaScript
Save to your folder(s)



Copy this code and paste it in your HTML
  1. //удаляем дубликаты в массиве
  2. function removeDuplicateElement(arrayName)
  3. {
  4. var newArray=new Array();
  5. label:for(var i=0; i<arrayName.length;i++ )
  6. {
  7. for(var j=0; j<newArray.length;j++ )
  8. {
  9. if(newArray[j]==arrayName[i])
  10. continue label;
  11. }
  12. newArray[newArray.length] = arrayName[i];
  13. }
  14. return newArray;
  15. }
  16.  
  17. //функции для удаления лишних пробелов
  18. var allSpacesRe = /\s+/g;
  19. var leadingSpacesRe = /^\s+/;
  20. var trailingSpacesRe = /\s+$/;
  21. function removeSpaces(s) { return s.replace(allSpacesRe, ""); }
  22. function trimLeading(s) { return s.replace(leadingSpacesRe, ""); }
  23. function trimTrailing(s) { return s.replace(trailingSpacesRe, ""); }
  24. function trim(s) { return trimLeading(trimTrailing(s)); }
  25.  
  26.  
  27. $(document).ready(function(){
  28.  
  29. //собираем массив всех производителей
  30. var arr_proz=[];
  31. var el=$('.views-table tr');
  32. for(var d=0;d<el.size();d++){
  33. $(el[d]).find('td').each(function(c){
  34. if(c==1){
  35. arr_proz[d]=$(this).text();
  36. }
  37. })
  38. }
  39. arr_proz=removeDuplicateElement(arr_proz);
  40.  
  41. //формируем селект по производителям
  42. var sel='';
  43. $.each(arr_proz,function(index,value){
  44. if(value){
  45. value=trim(value);
  46. //Удаляем слова в скобках что бы потом поиск по регулярному выражению прошел без проблем
  47. var opval=value.replace(/\([а-яА-Я]+\)/g,'');
  48. //alert(opval);
  49. sel+='<option value="'+opval+'">'+value+'</option>';
  50. }
  51. })
  52. sel='<select id="sel"><option value="all">Все</option>'+sel+'</select>';
  53.  
  54. //добовляем форму на страницу
  55. $('.cols-2').before('<form id="filtertab" name="filtertab">'+sel+'&nbsp;<input type="text" id="minpower" size="10"><input type="text" id="maxpower" size="10">&nbsp;<input type="submit" id="slight" value="Применить"></form>');
  56.  
  57. $('#filtertab').submit(function(){
  58. //сбор значений
  59. var minPower=$('#minpower').val();
  60. minPower=minPower.replace(/\,/g,'.');
  61. minPower=minPower*1;
  62. var maxPower=$('#maxpower').val();
  63. maxPower=maxPower.replace(/\,/g,'.');
  64. maxPower=maxPower*1;
  65. var se=$('#sel').val();
  66. var re = RegExp('.*'+se+'.*');
  67.  
  68. if(maxPower==0){maxPower=9999999;}
  69. //поиск по таблице
  70. var mpElems=$('.views-table tr');
  71. for(var i=0;i<mpElems.size();i++){
  72. $(mpElems[i]).find('td').each(function(b){
  73. if(b==1){
  74. if(se!='all'){
  75. if(re.test($(this).text())){ $(this).parent().addClass('tabline');
  76. valtr=1;
  77. }
  78. else{$(this).parent().removeClass('tabline');
  79. valtr=0;
  80. }
  81. }else{
  82. $(this).parent().addClass('tabline');
  83. valtr=1;
  84. }
  85. }
  86.  
  87. if(b==2 && valtr==1){
  88.  
  89. var pval=$(this).text();
  90. if(minPower<=pval && maxPower>=pval){ $(this).parent().addClass('tabline');
  91. }
  92. else{
  93.  
  94. $(this).parent().removeClass('tabline');
  95. }
  96. }
  97.  
  98. })
  99. }
  100. return false;
  101. })
  102. })

Report this snippet


Comments

RSS Icon Subscribe to comments

You need to login to post a comment.