0

Hi I have 2 tables like this with some checkbox for filter the table:

<label><input type="checkbox" name="chk_filter_Grocery_1" id="chk_filter_Grocery_1_1" value="1;">Alamond</label>
<label><input type="checkbox" name="chk_filter_Grocery_1" id="chk_filter_Grocery_1_2" value="14;">Apple</label>
<label><input type="checkbox" name="chk_filter_Grocery_1" id="chk_filter_Grocery_1_3" value="5;6;">Lemon & Orange</label>
<label><input type="checkbox" name="chk_filter_Grocery_1" id="chk_filter_Grocery_1_4" value="17;">Coconut</label>

<table width="620px" id="Grocery-NA768">
    <tbody>
        <tr class="14">
            <td width="185" height="35" align="left">Apple</td>
            <td width="65" height="35" align="center" valign="middle">3 Kg</td>
            <td width="80" height="35" align="center" valign="middle">28/07/2011</td>
        </tr>
        <tr class="5">
            <td height="35" align="left">Lemon</td>
            <td height="35" align="center" valign="middle">5 Kg</td>
            <td height="35" align="center" valign="middle">28/07/2011&nbsp;</td>
        </tr>
        <tr class="17">
            <td height="35" align="left">Coconut</td>
            <td height="35" align="center" valign="middle">4 Kg</td>
            <td height="35" align="center" valign="middle">28/07/2011&nbsp;</td>
        </tr>
        <tr class="14">
            <td height="35" align="left">Apple</td>
            <td height="35" align="center" valign="middle">2 Kg</td>
            <td height="35" align="center" valign="middle">27/04/2011&nbsp;</td>
        </tr>
        <tr class="1">
            <td height="35" align="left">Almond</td>
            <td height="35" align="center" valign="middle">3 Kg</td>
            <td height="35" align="center" valign="middle">27/04/2011&nbsp;</td>
        </tr>
        <tr class="6">
            <td height="35" align="left">Orange</td>
            <td height="35" align="center" valign="middle">3 kg</td>
            <td height="35" align="center" valign="middle">27/04/2011&nbsp;</td>
        </tr>
    </tbody>
</table>

<label><input type="checkbox" name="chk_filter_Wine_1" id="chk_filter_Wine_1_1" value="51;">Brunello di Montalcino</label>
<label><input type="checkbox" name="chk_filter_Wine_1" id="chk_filter_Wine_1_2" value="4;">Dolcetto</label>
<label><input type="checkbox" name="chk_filter_Wine_1" id="chk_filter_Wine_1_3" value="35;64;">Pinot noir & Pinot blanc</label>
<label><input type="checkbox" name="chk_filter_Wine_1" id="chk_filter_Wine_1_4" value="72;">Shiraz </label>
<table width="620px" id="Wine-NA768">
    <tbody>
        <tr class="4">
            <td width="185" height="35" align="left">Dolcetto</td>
            <td width="65" height="35" align="center" valign="middle">3 b</td>
            <td width="80" height="35" align="center" valign="middle">28/07/2011</td>
        </tr>
        <tr class="35">
            <td height="35" align="left">Pinot blanc</td>
            <td height="35" align="center" valign="middle">5 b.</td>
            <td height="35" align="center" valign="middle">28/07/2011&nbsp;</td>
        </tr>
        <tr class="72">
            <td height="35" align="left">Shiraz</td>
            <td height="35" align="center" valign="middle">4 b.</td>
            <td height="35" align="center" valign="middle">28/07/2011&nbsp;</td>
        </tr>
        <tr class="14">
            <td height="35" align="left">Dolcetto</td>
            <td height="35" align="center" valign="middle">2 b.</td>
            <td height="35" align="center" valign="middle">27/04/2011&nbsp;</td>
        </tr>
        <tr class="51">
            <td height="35" align="left">Brunello di Montalcino</td>
            <td height="35" align="center" valign="middle">3 b.</td>
            <td height="35" align="center" valign="middle">27/04/2011&nbsp;</td>
        </tr>
        <tr class="64">
            <td height="35" align="left">Pinot noir</td>
            <td height="35" align="center" valign="middle">3 b.</td>
            <td height="35" align="center" valign="middle">27/04/2011&nbsp;</td>
        </tr>
    </tbody>
</table>

The two table have a different id (Grocery-NA768) and (Wine-NA768) and each checkbox has one or more (max 2) value (1;12;) and every of the table has the corresponding number as class.

I would like to filter the table clicking on the checkbox. I.e. when I click the apple checkbox (value 14) I want to see only the apple in the table (class 14), then if I click on the citrus (value 1;12;) checkbox I will see apple (class 14), lemon (class 5)and orange. If I deselect all the checkbox I will see the whole list. Same thing for the wine table. I site new of jquery and I've found how to show or hide table row clicking on a checkbox but nothing similar to my needs.

Thanks in advance Michele

1 Answer 1

1

Working example: http://jsfiddle.net/petersendidit/6dNKA/3/

See comments in the code:

// Define some config objects and loop over them to get things set up
$.each([{
    table: $("#Grocery-NA768"),
    inputs: $("input[name='chk_filter_Grocery_1']")
},{
    table: $("#Wine-NA768"),
    inputs: $("input[name='chk_filter_Wine_1']")
}],function(i, obj){
    var list = [];
    obj.inputs.click(function() {
        var that = $(this),
            value = that.val().match(/\d+/g),
            rows = obj.table.find("tr");

        // If its checked then add it to the list
        if ( that.prop("checked") ) {
            list = $.merge(list, value);
        } else {
            // if its not then remove the items from the list
            list = $.map( list, function( x ) {
                return ( $.inArray( x, value ) > -1 ) ? null : x;
            });
        }
        // If the list has items
        if ( list.length ) {
            rows.hide() // hide all rows
                .filter("."+list.join(",.")) // find the ones we care about
                .show(); // and show them
        } else {
            // If no items in the list
            rows.show(); // show every row
        }
    });
});
Sign up to request clarification or add additional context in comments.

2 Comments

@Michele please mark it as the correct answer if it help you or at least vote up. :)
@Michele that's ok. Welcome to stackoverflow :D

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.