Не удается установить флажок Tablesorter Filtering для работы - PullRequest
1 голос
/ 26 марта 2012

Я пытаюсь получить плагин TableSorter для работы с флажками.

По умолчанию они показывают сортировку текстовых полей:

  • filterContainer (string) - идентификатор DOM поля ввода, в котором пользователь будет вводить строку поиска.По умолчанию это «# filter-box».
.tablesorterFilter({filterContainer: "#filter-box",
                            filterClearContainer: "#filter-clear-button",
                            filterColumns: [0]});

.

<input name="filter" id="filter-box" value="" maxlength="30" size="30" type="text">

И я пытаюсь сделать фильтр флажка, иВот что они говорят о флажках:

  • filterOrMode (логический) - Фильтровать по ИЛИ режиму, может произойти любое слово.По умолчанию используется значение false (режим AND, все слова должны встречаться).

Итак, я сделал это:

.tablesorterFilter({filterOrMode: true,
        filterContainer: '#check-box',
                    filterColumns: [0]});

.

<input name="filter" id="check-box" type="checkbox" value="Doe"> Doe<br>
<input name="filter" id="check-box" type="checkbox" value="Smith"> Smith<br>

И это не работает , хотя в смутной документации сказано, что должно. Вот как оригинал работает для тех, кто заинтересован.

Если у кого-то есть идеи, почему это происходит, пожалуйста, дайте мне знать:)!

Спасибо!:))

Ответы [ 2 ]

3 голосов
/ 27 марта 2012

Hiya okeis so рабочая демонстрация здесь jsfiddle: http://jsfiddle.net/BCreb/87/

Пояснение

Итак, для начала: у вас есть 2 флажка с одинаковым идентификатором, который не верен :) см. Обновленный HTML ниже (после кода JQuery).

Я не уверен, что вы можете сделать это с помощью флажка (я могу ошибаться): read the plugin: (Обратите внимание, что некоторые парни написали парсер, вы можете проверить их), но мне нравится таблица сортировщика, ссылка на плагин: [ссылка] должна Работа. https://github.com/jbritten/jquery-tablesorter-filter/blob/master/tablesorter_filter.js;

& Вы также можете посмотреть здесь хорошо discussion / opinions здесь: jQuery табличный фильтр с текстом, флажки, выбирает & вы можете посмотреть в этот плагин: http://datatables.net/; Но вышеприведенное решение поможет вам.

Below code has filterRow() and ShowAll() function which filter your table data accordingly and display the row:

Код JQuery

jQuery(document).ready(function() {
    $("#myTable").tablesorter({
        debug: false,
        widgets: ['zebra'],
        sortList: [[0, 0]]
    }).tablesorterFilter({
        filterContainer: $("#filter-box"),
        filterClearContainer: $("#filter-clear-button"),
        filterColumns: [0],
        filterCaseSensitive: false,
        callback: function() {
            var rowCount = $("#myTable tr:visible").length - 1;
           // alert(rowCount);
        }
    });

    $("#check-box, #check-box2").click(function(){
      // alert($(this).is(":checked"));

     // If both the checkboxes are selected or not selected.  
    if (($("#check-box").is(":checked") && $("#check-box2").is(":checked")) || (!$("#check-box").is(":checked") && !$("#check-box2").is(":checked")) ) {

            showAllRow();

        } else if ($("#check-box").is(":checked")  ) {
           filterRow($("#check-box").val());
        } else if ($("#check-box2").is(":checked") ){
           filterRow($("#check-box2").val());
        }

    });



});

function showAllRow() {

    $("#myTable").find("tr").each(function(){
               $(this).show();
    });

}


function filterRow(chckBoxValue) {

    $("#myTable").find("tr").each(function(){

    var bool = 0; // Identifies if the rows td has that filter or not.

        $(this).find("td").each(function(){
            if($(this).text() != chckBoxValue) {
                bool = 1;
            } else { 
                bool = 0;
                return false;
            }
        });

        if (bool == 1) {
               $(this).hide();
        }else{
               $(this).show();
        }
    });

}

​

Это должно помочь! ура

HTML

Search: <input name="filter" id="filter-box" value="" maxlength="30" size="30" type="text">
<input id="filter-clear-button" type="submit" value="Clear"/>

<br/>
 <input name="filter" id="check-box" type="checkbox" value="Doe"> Doe<br>
<input name="filter" id="check-box2" type="checkbox" value="Smith"> Smith<br>

<table id="myTable">
  <thead>
    <tr>
      <th>Last Name</th>
      <th>First Name</th>
      <th>Email</th>
      <th>Web Site</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Smith</td>
      <td>John</td>
      <td>jsmith@gmail.com</td>
      <td>http://www.jsmith.com</td>
    </tr>
    <tr>
      <td>Doe</td>
      <td>Jason</td>
      <td>jdoe@hotmail.com</td>
      <td>http://www.jdoe.com</td>
    </tr>
    <tr>
      <td>Smith</td>
      <td>John</td>
      <td>jsmith@gmail.com</td>
      <td>http://www.jsmith.com</td>
    </tr>
    <tr>
      <td>Doe</td>
      <td>Jason</td>
      <td>jdoe@hotmail.com</td>
      <td>http://www.jdoe.com</td>
    </tr>
    <tr>
      <td>Smith</td>
      <td>John</td>
      <td>jsmith@gmail.com</td>
      <td>http://www.jsmith.com</td>
    </tr>
    <tr>
      <td>Doe</td>
      <td>Jason</td>
      <td>jdoe@hotmail.com</td>
      <td>http://www.jdoe.com</td>
    </tr>
    <tr>
      <td>Smith</td>
      <td>John</td>
      <td>jsmith@gmail.com</td>
      <td>http://www.jsmith.com</td>
    </tr>
    <tr>
      <td>Doe</td>
      <td>Jason</td>
      <td>jdoe@hotmail.com</td>
      <td>http://www.jdoe.com</td>
    </tr>
    <tr>
      <td>Smith</td>
      <td>John</td>
      <td>jsmith@gmail.com</td>
      <td>http://www.jsmith.com</td>
    </tr>
    <tr>
      <td>Doe</td>
      <td>Jason</td>
      <td>jdoe@hotmail.com</td>
      <td>http://www.jdoe.com</td>
    </tr>
  </tbody>
</table>​
0 голосов
/ 08 октября 2013

Tats_innit, я пытался адаптировать приведенный выше код для работы с четырьмя имеющимися у меня флажками, но когда я это сделаю, он не распознает код. Вот что я сделал:

jQuery(document).ready(function () {
$("#rowspan").tablesorter({
    debug: false,
    widgets: ['zebra'],
    sortList: [
        [0, 0]
    ]
}).tablesorterFilter({
    filterContainer: $("#filter-box"),
    filterClearContainer: $("#filter-clear-button"),
    filterColumns: [0],
    filterCaseSensitive: false,
    callback: function () {
        var rowCount = $("#rowspan tr:visible").length - 1;
        // alert(rowCount);
    }
});

$("#check-box, #check-box2, #check-box3, #check-box4").click(function () {
    // alert($(this).is(":checked"));

    // If both the checkboxes are selected or not selected.  
    if ($("#check-box").is(":checked") && $("#check-box2").is(":checked") && $("#check-box3").is(":checked") && $("#check-box4").is(":checked")) || (!$("#check-box").is(":checked") && !$("#check-box2").is(":checked") && $("#check-box3").is(":checked") && $("#check-box4").is(":checked")) {

        showAllRow();

    } else if ($("#check-box").is(":checked")) {
        filterRow($("#check-box").val());
    } else if ($("#check-box2").is(":checked")) {
        filterRow($("#check-box2").val());
    } else if ($("#check-box3").is(":checked")) {
        filterRow($("#check-box3").val());
    } else if ($("#check-box4").is(":checked")) {
        filterRow($("#check-box4").val());
    }


});



});

function showAllRow() {

$("#rowspan").find("tr").each(function () {
    $(this).show();
});

}


function filterRow(chckBoxValue) {

$("#rowspan").find("tr").each(function () {

    var bool = 0; // Identifies if the rows td has that filter or not.

    $(this).find("td").each(function () {
        if ($(this).text() != chckBoxValue) {
            bool = 1;
        } else {
            bool = 0;
            return false;
        }
    });

    if (bool == 1) {
        $(this).hide();
    } else {
        $(this).show();
    }
});

}

Вот мой HTML, хотя он довольно длинный ...

<form>
<input name="filter" id="filter-box" value="" maxlength="30" size="30" type="text">
<input id="filter-clear-button" type="submit" value="Clear" />
<br/>
<input name="filter" id="check-box" type="checkbox" value="Waiting for parts">Waiting for parts
<input name="filter" id="check-box2" type="checkbox" value="Pending">Pending
<input name="filter" id="check-box3" type="checkbox" value="Complete">Complete
<input name="filter" id="check-box4" type="checkbox" value="Waiting for customer response">Waiting for customer response</form>
<table width="100%" id="rowspan" class="tablesorter" cellpadding="0" cellspacing="1">
<thead>
    <tr>
        <th>&nbsp;</th>
        <th>Ticket #</th>
        <th>Customer</th>
        <th>Status</th>
        <th>Edit</th>
        <th>Delete</th>
    </tr>
</thead>
<tbody>
    <tr bgcolor="#7BCC70">
        <td><b>1</b>
        </td>
        <td align="center" height='35px'><a title="View details of ticket 248341" href="ticketdetails.php?ticketid=248341"><b>248341</b></a>
        </td>
        <td align="center" height='35px'><b>Brenda Lear</b>
        </td>
        <td align="center" height='35px'><b>Complete</b>
        </td>
        <td align="center" height='35px'><a title="Edit ticket info" href="editticket.php?ticketid=248341"><b>Edit</b></a>
        </td>
        <td align="center" height='35px'><a id="commentDelete" onClick="return delTicket(this.id);" title="Delete ticket" href="?del=248341"><b>Delete</b></a>
        </td>
    </tr>
    <tr bgcolor="#7BCC70">
        <td><b>2</b>
        </td>
        <td align="center" height='35px'><a title="View details of ticket 522303" href="ticketdetails.php?ticketid=522303"><b>522303</b></a>
        </td>
        <td align="center" height='35px'><b>Cheryl Spencer</b>
        </td>
        <td align="center" height='35px'><b>Complete</b>
        </td>
        <td align="center" height='35px'><a title="Edit ticket info" href="editticket.php?ticketid=522303"><b>Edit</b></a>
        </td>
        <td align="center" height='35px'><a id="commentDelete" onClick="return delTicket(this.id);" title="Delete ticket" href="?del=522303"><b>Delete</b></a>
        </td>
    </tr>
    <tr bgcolor="#7BCC70">
        <td><b>3</b>
        </td>
        <td align="center" height='35px'><a title="View details of ticket 122588" href="ticketdetails.php?ticketid=122588"><b>122588</b></a>
        </td>
        <td align="center" height='35px'><b>Roz Taylor</b>
        </td>
        <td align="center" height='35px'><b>Complete</b>
        </td>
        <td align="center" height='35px'><a title="Edit ticket info" href="editticket.php?ticketid=122588"><b>Edit</b></a>
        </td>
        <td align="center" height='35px'><a id="commentDelete" onClick="return delTicket(this.id);" title="Delete ticket" href="?del=122588"><b>Delete</b></a>
        </td>
    </tr>
    <tr bgcolor="#7BCC70">
        <td><b>4</b>
        </td>
        <td align="center" height='35px'><a title="View details of ticket 122589" href="ticketdetails.php?ticketid=122589"><b>122589</b></a>
        </td>
        <td align="center" height='35px'><b>Roz Taylor</b>
        </td>
        <td align="center" height='35px'><b>Complete</b>
        </td>
        <td align="center" height='35px'><a title="Edit ticket info" href="editticket.php?ticketid=122589"><b>Edit</b></a>
        </td>
        <td align="center" height='35px'><a id="commentDelete" onClick="return delTicket(this.id);" title="Delete ticket" href="?del=122589"><b>Delete</b></a>
        </td>
    </tr>
   </tbody>
</table>
...