jQuery Mobile: filtro de devolución de llamada personalizada

Descripción

Al igual que con la extensión de la vista de lista, la función de devolución de llamada se puede proporcionar al filtro o incluso anular el filtro por completo en el evento filterablebeforefilter . Antes de que el filtro se dispare realmente, se necesita un retraso de 250 ms. Esto evita que la función de filtrado se ejecute muchas veces mientras el usuario está escribiendo.

Para crear un nuevo valor predeterminado para todos los widgets filtrables, configure una función de filtrado personalizada, anule la opción filtercallback en el prototipo del widget en un controlador de señal mobileinit como se muestra en el siguiente código.

$( document ).one( "mobileinit", function() {
   $.mobile.filterable.prototype.options.filterCallback = function( index, searchValue ) {
      // The this keyword in this function refers to the element
      // for the code which decide whether or not to filter.
      // The true return value shows that the element referred
      // to by this keyword is to be filtered.
      // If returns false specifies that the item is to be displayed.
      //
      // Custom filtering logic goes here.
   });
});

Al configurar las opciones filterCallback , puede configurar una función de filtrado personalizada para un único widget filtrable como se muestra en el siguiente código.

$.mobile.document.one( "filterablecreate", "#myFilterable", function() {
   $( "#myFilterable" ).filterable( "option", "filterCallback", 
      function( index, searchValue ) {
      // The above example explains the callback function's signature.
      //
      // Custom filtering logic goes here.
   });
});

Para anular el filtro por completo (por ejemplo, siempre que cargue los datos del lado del servidor o desde localStorage), únase al evento filterablebeforfilter como se muestra en el siguiente código.

$( ".selector" ).on( "filterablebeforefilter", function( e, data ) {
   var value;

   e.preventDefault();
   value = data.input.value;
   // trigger own request to database
});