Ver Mensaje Individual
  #1 (permalink)  
Antiguo 18/10/2010, 19:00
neez
 
Fecha de Ingreso: julio-2009
Mensajes: 29
Antigüedad: 15 años, 4 meses
Puntos: 0
Exclamación Autocomplete jquery acentos

Que tal amigos del foro, quisiera ver si es posible me puedan brindar su apoyo para un sistema que ando realizando de busqueda, la busqueda me lo hace bien y todo el problema es que me han pedido que como google se haga un autocompletable, si me sale con jquery pero el detalle biene cuando intento escribir caracteres especiales, he ahi cuando me falla ya que me muestra caracteres raros, buscando desde el sabado pasado he encontrado un codigo el cual me da los acentos y las ñ's pero solo funciona con palabras estaticas, les muestro el codigo:

Código HTML:
<meta charset="utf-8">
    
    
    
    
    
    
    
    
    <script>
    $(function() {
        var names = [ "Jörn Zaefferer", "Scott González", "John Resig" ];

        var accentMap = {
            "á": "a",
            "ö": "o"
        };
        var normalize = function( term ) {
            var ret = "";
            for ( var i = 0; i < term.length; i++ ) {
                ret += accentMap[ term.charAt(i) ] || term.charAt(i);
            }
            return ret;
        };

        $( "#developer" ).autocomplete({
            source: function( request, response ) {
                var matcher = new RegExp( $.ui.autocomplete.escapeRegex( request.term ), "i" );
                response( $.grep( names, function( value ) {
                    value = value.label || value.value || value;
                    return matcher.test( value ) || matcher.test( normalize( value ) );
                }) );
            }
        });
    });
    </script>



<div class="demo">

<div class="ui-widget">
    <form>
    <label for="developer">Developer: </label>
    <input id="developer" />
    </form>
</div>

</div><!-- End demo -->



<div class="demo-description">
<p>The autocomplete field uses a custom source option which will match results that have accented characters even when the text field doesn't contain accented characters. However if the you type in accented characters in the text field it is smart enough not to show results that aren't accented.</p>
<p>Try typing "Jo" to see "John" and "Jörn", then type "Jö" to see only "Jörn".</p>
</div><!-- End demo-description --> 
Esto funciona perfectamente hasta que se intenta adaptar a uno con palabras dinamicas recogidas de una busqueda les muestro el codigo:

Código HTML:
 <script type="text/javascript">
    $(function() {
        
        function split( val ) {
            return val.split( /,\s*/ );
        }
        function extractLast( term ) {
            return split( term ).pop();
        }
        
        var accentMap = {
            "á": "a",
            "ö": "o",
            "ñ": "n",
            "é": "e",
            "í": "i",
            "ó": "o",
            "ú": "u",
            };
            var normalize = function( term ) {
                var ret = "";
                for ( var i = 0; i < term.length; i++ ) {
                    ret += accentMap[ term.charAt(i) ] || term.charAt(i);
                }
                return ret;
            }
            
        $( "#search" ).autocomplete({
            source: function( request, response ) {
                var matcher = new RegExp( $.ui.autocomplete.escapeRegex( request.term ), "i" );
                response( $.grep( $.getJSON( "ajax_palabra.php", {
                    term: extractLast( request.term )
                }, response), function( value ) {
                    value = value.label || value.value || value;
                    return matcher.test( value ) || matcher.test( normalize( value ) );
                }) );
            },
            search: function() {
                // custom minLength
                var term = extractLast( this.value );
                if ( term.length < 2 ) {
                    return false;
                }
            },
            focus: function() {
                // prevent value inserted on focus
                return false;
            }            
        });
    });


    </script> 
como se daran cuenta he intentado de adaptarlo y es obio que con resultados no esperados, ya que me sigue mostrando los caracteres especiales con signos raros.

Ya andube viendo bastantes codigos y que el utf y &ntilde; no funcionan el unico que me ha funcionado para mostrarlos bien es el primer codigo que puse pero despues ya no se bien como adaptarlo, si me pueden ayudar estare sumamente agradecido :( :(