Click here to Skip to main content
15,889,865 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
Hi,

In my page menus are there . Menus contains sub-menus , sub-menus and Multiple sub-menus.

I kept search box for search menu items , sub menus items. I written code which helps to search as per menu name ... If entering text related to Main menu , it need to show all sub menus also. But my code not working if sub-menus related to different text.

When i am entering , if text matches to main menu text and not to sub menu text , I need to show both main menu and sub menu. But below code hiding submenu.

HTML
<ul class="nav" id="side-menu">
                            <div class="sidebar-search">
                                <div class="input-group custom-search-form">
                                    <input type="text" class="form-control" placeholder="Search..." id="txtSearchboxIDCommon" />
                                    <span class="input-group-btn">

                                        <button class="btn btn-default" type="button">
                                            Fruits</a>
            </li>
            <li>
                <a href="#">^__i class="fa fa-bar-chart-o fa-fw">Apple<span class="fa arrow"></span></a>
                <ul class="nav nav-second-level">
                    <li>
                        <a href="../test/test2.aspx" target="_blank">Orange</a>
                    </li>
                    <li>
                        <a href="../test/test3.aspx" target="_blank">Grapes</a>
                    </li>
                    <li>
                        <a href="../test/test4.aspx" target="_blank">Mango</a>
                    </li>
                </ul>
            </li>
</ul>



JavaScript
$(document).ready(function () {
            $("#txtSearchboxIDCommon").on("keyup click input", function () {

                if (this.value.length > 0) {
                    $("#side-menu li").show().filter(function () {
                        //alert("test");
                        return $(this).find('a').text().toLowerCase().indexOf($("#txtSearchboxIDCommon").val().toLowerCase()) == -1;
                    }).hide();
                }
                else {
                    $("#side-menu li").show();
                }
            });
        });



Thanks,
Suresh P

What I have tried:

HTML
<ul class="nav" id="side-menu">
                            <div class="sidebar-search">
                                <div class="input-group custom-search-form">
                                    <input type="text" class="form-control" placeholder="Search..." id="txtSearchboxIDCommon" />
                                    <span class="input-group-btn">

                                        <button class="btn btn-default" type="button">
                                            Fruits</a>
            </li>
            <li>
                <a href="#">^__i class="fa fa-bar-chart-o fa-fw">Apple<span class="fa arrow"></span></a>
                <ul class="nav nav-second-level">
                    <li>
                        <a href="../test/test2.aspx" target="_blank">Orange</a>
                    </li>
                    <li>
                        <a href="../test/test3.aspx" target="_blank">Grapes</a>
                    </li>
                    <li>
                        <a href="../test/test4.aspx" target="_blank">Mango</a>
                    </li>
                </ul>
            </li>
</ul>



JavaScript
$(document).ready(function () {
            $("#txtSearchboxIDCommon").on("keyup click input", function () {

                if (this.value.length > 0) {
                    $("#side-menu li").show().filter(function () {
                        //alert("test");
                        return $(this).find('a').text().toLowerCase().indexOf($("#txtSearchboxIDCommon").val().toLowerCase()) == -1;
                    }).hide();
                }
                else {
                    $("#side-menu li").show();
                }
            });
        });
Posted

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900