2012-04-20 3 views
4

У меня есть поле поиска в моем проекте, которое использует $.post для получения результатов для поискового запроса. Моя проблема: когда пользователь нажимает кнопку поиска, он работает правильно, однако, когда пользователь снова нажимает кнопку поиска, а затем нажимает на мои столбцы, сортировщик jQuery дублирует его с предыдущими показами поиска в таблице.Моя таблица получает дублированные строки с JQuery Table Sorter

Как я могу решить эту проблему, поэтому функция сортировки не дублируется?

это код JQuery для кнопки поиска.

 $(function() { 
      $('#submitfloat').click(function() { 
       $('#loading').show(); 
       setTimeout(function() { $("#loading").hide(); }, 800); 
       var SubjectTypes = $('#SubjectTypes').val(); 
       var Teams = $('#Teams').val(); 
       var Companies = $('#Companies').val(); 
       var Consultants = $('#Consultants').val(); 
       var PlannedDates = $('#PlannedDates').val(); 
       var CompletedDates = $('#CompletedDates').val(); 
       var DateTypes = $('#DateTypes').val(); 
       var data = { 
        Subjectypes: SubjectTypes, 
        Companies: Companies, 
        Teams: Teams, 
        Consultants: Consultants, 
        PlannedDates: PlannedDates, 
        CompletedDates: CompletedDates, 
        DateTypes: DateTypes 
       }; 

       var fromDate = $('#PlannedDates').val(); 
       var endDate = $('#CompletedDates').val(); 
       if (Date.parse(fromDate) > Date.parse(endDate)) { 
        jAlert("End date must be later than start date", "Warning"); 
        return false; 
       } else { 
        $('#GoalcardSearchResult tbody').hide(); 
        setTimeout(function() { $("#GoalcardSearchResult tbody").show(); }, 800); 
        $.post('@Url.Action("Search", "SearchNKI")', data, function (result) { 

         $("#GoalcardSearchResult tbody").empty(); 


         result.forEach(function (goalcard) { 

          $("#GoalcardSearchResult tbody").append(
           $('<tr/>', { 
            click: function() { 
             id = goalcard.Id; 
             var url = '@Url.Action("AnswerForm", "AnswerNKI", new { id = "__id__"})'; 
             window.location.href = url.replace('__id__', id); 


            }, 

            html: "<td>" + goalcard.Name + "</td><td>" + goalcard.Customer + "</td><td>" + goalcard.PlannedDate + "</td><td>" + goalcard.CompletedDate + "</td>" 
           })); 
         }); 
         $("#GoalcardSearchResult").tablesorter(); 
        }); 
        return false; 
       } 
      }); 
     }); 

Ваша помощь приветствуется, заблаговременно!

ответ

5

Я предполагаю, что tablesorter уже был инициализирован, прежде чем пользователь нажимает кнопку сортировки. В этом случае замените этот код:

$("#GoalcardSearchResult").tablesorter(); 

с этим:

$("#GoalcardSearchResult").trigger('update'); 
Смежные вопросы