2013-07-26 3 views
0

У меня проблемы. У меня есть таблица, созданная PHP, которая извлекает данные из файла Excel. Я хочу, чтобы пользователь мог искать определенные столбцы (пользователь указывает столбец) для значения (также указанного пользователем), и если указанное значение существует, выделите всю строку.Поиск в таблице JQuery и выделение строки

Я делал домашнее задание, и я был в состоянии найти подходящую душу. Вот код, связанный с моим кошмаром (:

$(document).ready(function(){ 
    $("#search").click(function(){ 
     var searchText; 

     if(col == 0 || col == 1 || col ==3){ 
      searchText = $("#searchText").val() 
     } 
     else if(col == 6){ 
      searchText = $("#maxPets option:selected").text(); 
     } 
     else if(col == 7){ 
      searchText = $("#maxWeight option:selected").text(); 
     } 

     $("myTable tr td:nth-child(" + col +")").each(function() { 

      if ($(this).val.indexOf(searchText) !=-1) { 
       tr.addClass('result'); } 
      else { 
       tr.removeClass('result'); 
       } 

     }); 


    }); 
}); 
+0

где HTML.? –

+1

Откуда возникает переменная 'col'? – Schmalzy

+0

http://bartaz.github.io/sandbox.js/jquery.highlight.html – DevlshOne

ответ

1
$(document).ready(function(){ 
    $("#search").click(function(){ 
     var searchText; 
     $("tr").removeClass("result"); 
     if (col == 0 || col == 1 || col == 3) { 
      searchText = $("#searchText").val(); 
     } 
     else if(col == 6){ 
      searchText = $("#maxPets option:selected").text(); 
     } 
     else if(col == 7){ 
      searchText = $("#maxWeight option:selected").text(); 
     } 
     $("#myTable tr").filter(function() { 
      return $("td:eq(" + col + ")", this).text() == searchText; 
     }).closest("tr").addClass("result"); 
    }); 
}); 

jsFiddle DEMO -- Updated for partial search

Я до сих пор не знаю, где вы получаете col от. Я предполагаю выпадающее меню.

+0

Да, переменная col выводится из раскрывающегося списка. Это индекс, который нужно искать в столбце. Необходимо искать только эту колонку. И это сводило меня с ума. – bigjfunk

+0

Теперь он ограничен поиском только этого столбца, чтобы узнать, соответствует ли '.text()'. – DevlshOne

+0

Это выглядит намного лучше. Я не очень много с jquery. Он все еще не выделяет строку. Кроме того, это поиск прямого совпадения или частичного совпадения. Например, выделите строку, содержащую «Aerie on Tanque Verde»? Большое вам спасибо за вашу помощь. – bigjfunk

0

Изменение:

 if ($(this).val.indexOf(searchText) !=-1) { 
      tr.addClass('result'); } 
     else { 
      tr.removeClass('result'); 
      } 

к:

 if ($(this).text().indexOf(searchText) !=-1) { 
      $(this).closest("tr").addClass('result');  } 
     else { 
      $(this).closest("tr").removeClass('result'); 
     } 

val является метод JQuery, который является функцией, это не строка что вы можете искать. И это неправильный метод для того, что вы, по-видимому, хотите, - содержимое поля таблицы считывается с text() - val() - это значение для пользователя в положил.

И нет переменной tr - вы хотите добавить/удалить класс строки, содержащей элемент.

Это может быть дополнительно упрощено до:

$(this).closest("tr").toggleClass("result", $(this).text().indexOf(searchText) !=-1); 
Смежные вопросы