Foros del Web » Programando para Internet » Javascript » Frameworks JS »

Acentos en uiTableFilter

Estas en el tema de Acentos en uiTableFilter en el foro de Frameworks JS en Foros del Web. Hola, estoy usando el script de uiTableFilter en una de mis webs. Esta muy bien este script pero es bastante básico. Consiste en un pequeño ...
  #1 (permalink)  
Antiguo 08/08/2012, 02:49
 
Fecha de Ingreso: julio-2007
Ubicación: Málaga
Mensajes: 600
Antigüedad: 17 años, 3 meses
Puntos: 56
Acentos en uiTableFilter

Hola, estoy usando el script de uiTableFilter en una de mis webs. Esta muy bien este script pero es bastante básico.

Consiste en un pequeño buscador que muestra resultados en tiempo real. Pero mi problema son los acentos, cuando quieres buscar un artículo de la web tienes que hacerlo añadiendo los acentos. Por ejemplo si el título de un artículo es "Árbol" y buscas "arbol" sin acento, no te muestra el resultado.

He encontrado en el foro información sobre como sustituir los acentos, pero no se como acoplarlo al uiTableFilter.

El código del uiTableFilter es el siguiente:

Código:
(function($) {
  $.uiTableFilter = function(jq, phrase, column, ifHidden){
    var new_hidden = false;
    if( this.last_phrase === phrase ) return false;

    var phrase_length = phrase.length;
    var words = phrase.toLowerCase().split(" ");

    // these function pointers may change
    var matches = function(elem) { elem.show() }
    var noMatch = function(elem) { elem.hide(); new_hidden = true }
    var getText = function(elem) { return elem.text() }

    if( column ) {
      var index = null;
      jq.find("thead > tr:last > th").each( function(i){
        if( $.trim($(this).text()) == column ){
          index = i; return false;
        }
      });
      if( index == null ) throw("given column: " + column + " not found")

      getText = function(elem){ return $(elem.find(
        ("td:eq(" + index + ")")  )).text()
      }
    }

    // if added one letter to last time,
    // just check newest word and only need to hide
    if( (words.size > 1) && (phrase.substr(0, phrase_length - 1) ===
          this.last_phrase) ) {

      if( phrase[-1] === " " )
      { this.last_phrase = phrase; return false; }

      var words = words[-1]; // just search for the newest word

      // only hide visible rows
      matches = function(elem) {;}
      var elems = jq.find("tbody:first > tr:visible")
    }
    else {
      new_hidden = true;
      var elems = jq.find("tbody:first > tr")
    }

    elems.each(function(){
      var elem = $(this);
      $.uiTableFilter.has_words( getText(elem), words, false ) ?
        matches(elem) : noMatch(elem);
    });

    last_phrase = phrase;
    if( ifHidden && new_hidden ) ifHidden();
    return jq;
  };

  // caching for speedup
  $.uiTableFilter.last_phrase = ""

  // not jQuery dependent
  // "" [""] -> Boolean
  // "" [""] Boolean -> Boolean
  $.uiTableFilter.has_words = function( str, words, caseSensitive )
  {
    var text = caseSensitive ? str : str.toLowerCase();
    for (var i=0; i < words.length; i++) {
      if (text.indexOf(words[i]) === -1) return false;
    }
    return true;
  }
}) (jQuery);

Agradecería mucho cualquier ayuda.

Muchas gracias por adelantado
  #2 (permalink)  
Antiguo 10/08/2012, 02:19
 
Fecha de Ingreso: julio-2007
Ubicación: Málaga
Mensajes: 600
Antigüedad: 17 años, 3 meses
Puntos: 56
Respuesta: Acentos en uiTableFilter

Nadie sabría como modificar ese código?

Otra cosa que necesito hacer es que empiece a buscar cuando escriba 3 o 4 letras, para que cuando alguien escriba la letra "a" por ejemplo, que lo me muestre cientos de resultados.

Este es el código que va en el head del html

Código:
<script src="/js/jquery.uitablefilter.js" type="text/javascript"></script>
<script language="javascript">
$(function() {
	theTable = $("#latabla");
	$("#q").keyup(function() {
		$.uiTableFilter(theTable, this.value);
	});
});
</script>
y este el del body:

Código HTML:
<div id="busqueda">    
	<input type="text" class="searchInput" id="q" name="q" value="" />
</div>
<script>
function HttpRequest(url){
var pageRequest = false //variable to hold ajax object
if (!pageRequest && typeof XMLHttpRequest != 'undefined')
   pageRequest = new XMLHttpRequest()
if (pageRequest){ //if pageRequest is not false
   pageRequest.open('GET', url, false) //get page synchronously 
   pageRequest.send(null)
   embedpage(pageRequest)
   }
}
function embedpage(request){
//if viewing page offline or the document was successfully retrieved online (status code=2000)
if (window.location.href.indexOf("http")==-1 || request.status==200)
   document.write(request.responseText)
}
HttpRequest("/inc/resultados-buscador.php")
</script> 

Gracias de nuevo!
  #3 (permalink)  
Antiguo 10/08/2012, 02:19
 
Fecha de Ingreso: julio-2007
Ubicación: Málaga
Mensajes: 600
Antigüedad: 17 años, 3 meses
Puntos: 56
Respuesta: Acentos en uiTableFilter

---------repetido

Etiquetas: acentos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 07:58.