0

このコードを使用して検索をフィルタリングしています。.filter クラスを使用してフィルタリングしたい 2 つの列のみを取得しようとしていました。問題は、スクリプトが結果をフィルタリングするために、両方の列でテキストが一致する必要があることです。両方ではなくいずれかの列から結果を見つけるようにするにはどうすればよいですか?

$(document).ready(function() {
    var $rows = $('#orders tbody .filter');
    $('#filtersearch').keyup(function() {
        var val = $.trim($(this).val()).replace(/ +/g, ' ').toLowerCase();

        $rows.closest('tr').show().end().filter(function() {
            var text = $(this).text().replace(/\s+/g, ' ').toLowerCase();
            return !~text.indexOf(val);
        }).closest('tr').hide();
    });
    $('#filtersearch').keyup();
});

そして、データを含むテーブル

<table border="0" align="center" cellpadding="5" cellspacing="0" id="orders">
<thead>
<tr>
<th colspan="6">
            <form name"searchfilter">
            <input type="text" id="filtersearch" name="filtersearch" placeholder="Search by name or phone number" value="<?php echo $search; ?>">
            </form>
            </th>
</tr>
<tr>
<th width="15%">Date</th>
<th width="30%">Name</th>
<th width="30%">Phone</th>
<th width="15%">Location</th>
<th width="10%">Picked Up</th>
</tr>
</thead>
<tbody>
<?php
/* 
        VIEW.PHP
        Displays all data from 'players' table
*/

        // connect to the database
        include('connect-db.php');


        // get results from database
        $result = mysql_query("SELECT * FROM orders") 
                or die(mysql_error());  


        // loop through results of database query, displaying them in the table
        while($row = mysql_fetch_array( $result )) {
     $src = '';
     switch( $row['Location'] ) {
          case '1':
              $src = 'images/rear_icon.png';
              break;
          case '2':
              $src = '2.jpg';
              break;
          default:
              $src = 'default.jpg';

            }      // echo out the contents of each row into a table
                echo "<tr>";
                echo '<td>' . $row['date'] . '</td>';
                echo '<td class="filter">' . $row['Name'] . '</td>';
                echo '<td class="filter">' . $row['Phone'] . '</td>';
                echo '<td><img src="'.$src.'"></td>';
                echo '<td><a href="delete.php?id=' . $row['id'] . '"><img src="images/icons/checkmark.png"></a></td>';
                echo "</tr>"; 
        } 


?>
</tbody>
</table>
4

1 に答える 1

0

あなたは置き換えることができます

    $rows.closest('tr').show().end().filter(function() {
        var text = $(this).text().replace(/\s+/g, ' ').toLowerCase();
        return !~text.indexOf(val);
    }).closest('tr').hide();

   $rows.closest('tr').hide().each(function(){
       if ($('td', this).filter(function(){
            var text = $(this).text().replace(/\s+/g, ' ').toLowerCase();
            return text.indexOf(val)!=-1; // too much wine to play with ~ things
       }).length>0) $(this).show();
   })

個人的な意見:$rowsセルに名前を付けても、コードが読みやすく修正しやすくなるわけではありません。

于 2013-03-28T21:12:15.807 に答える