Search code examples
jqueryjquery-mobile

jquerymobile listview filter programmatically


I'm trying to accomplish this task.

I have two columns grid

<div class="ui-grid-a">
    <div class="ui-block-a" style="width:35%">
        <div data-role="controlgroup" data-type="horizontal">
            <a href="#" data-role="button">A</a>
            <a href="#" data-role="button">B</a>
            <a href="#" data-role="button">C</a>
            <a href="#" data-role="button">D</a>
            <a href="#" data-role="button">E</a>
            <a href="#" data-role="button">F</a>
        </div>        
        <div data-role="controlgroup" data-type="horizontal">
            <a href="#" data-role="button">G</a>
            <a href="#" data-role="button">H</a>
            <a href="#" data-role="button">I</a>
            <a href="#" data-role="button">J</a>
            <a href="#" data-role="button">K</a>
            <a href="#" data-role="button">L</a>
        </div> 
        <div data-role="controlgroup" data-type="horizontal">
            <a href="#" data-role="button">M</a>
            <a href="#" data-role="button">N</a>
            <a href="#" data-role="button">Ñ</a>
            <a href="#" data-role="button">O</a>
            <a href="#" data-role="button">P</a>
            <a href="#" data-role="button">Q</a>
        </div> 
        <div data-role="controlgroup" data-type="horizontal">
            <a href="#" data-role="button">R</a>
            <a href="#" data-role="button">S</a>
            <a href="#" data-role="button">T</a>
            <a href="#" data-role="button">U</a>
            <a href="#" data-role="button">V</a>
            <a href="#" data-role="button">W</a>
        </div>         
        <div data-role="controlgroup" data-type="horizontal">
            <a href="#" data-role="button">X</a>
            <a href="#" data-role="button">Y</a>
            <a href="#" data-role="button">Z</a>
            <a href="#" data-role="button" onclick="buscar();">BUSCAR</a>
        </div>         
    </div>       
    <div class="ui-block-b" style="width:65%; top:0; position:relative;">
        <ul id ="milista" data-role="listview" data-filter="true" style="left:1em; width:95%; ">
            <li><a href="index.html">Acura</a></li>
            <li><a href="index.html">Audi</a></li>
            <li><a href="index.html">BMW</a></li>
            <li><a href="index.html">Cadillac</a></li>
            <li><a href="index.html">Chrysler</a></li>
            <li><a href="index.html">Dodge</a></li>
            <li><a href="index.html">Ferrari</a></li>
            <li><a href="index.html">Ford</a></li>
            <li><a href="index.html">GMC</a></li>
            <li><a href="index.html">Honda</a></li>
            <li><a href="index.html">Hyundai</a></li>
            <li><a href="index.html">Infiniti</a></li>
            <li><a href="index.html">Jeep</a></li>
            <li><a href="index.html">Kia</a></li>
            <li><a href="index.html">Lexus</a></li>
            <li><a href="index.html">Mini</a></li>
            <li><a href="index.html">Nissan</a></li>
            <li><a href="index.html">Porsche</a></li>
            <li><a href="index.html">Subaru</a></li>
            <li><a href="index.html">Toyota</a></li>
            <li><a href="index.html">Volkswagon</a></li>
            <li><a href="index.html">Volvo</a></li>
        </ul>        
    </div>
</div>

like shows at http://jsfiddle.net/jupagose/sugfP/, I want to programmatically filter the listview while the user type's on lefthand panel. I don't want to force the user to load OS keyboard.

It is possible with jquery?


Solution

  • There you go :

      $("[data-role=button]").click(function(e){
            var filter_el = $(".ui-input-text");
            var filter_val = filter_el.val();
            var filter_query = filter_val+$(this).text();
            filter_el.val(filter_query);
            filter_el.trigger("change")
        });
    

    Ideally, I would add a class to each button and use that class for the button click event e.g. $(".keyboard-btn").click ... the same goes for the filter.

    Here's a fiddle: http://jsfiddle.net/sugfP/14/

    UPDATE:

    Here's an example of using keyboard classes: http://jsfiddle.net/sugfP/15/