Partage
  • Partager sur Facebook
  • Partager sur Twitter

Autocomplétion & Accent

Sujet résolu
26 mai 2014 à 11:03:31

Bonjour

Je me suis inspirée de ce tuto pour faire mon autocomplétion : http://x-zolezzi.developpez.com/tutoriels/web/autocompletion/

Et j'en suis arrivée à :
jQuery().ready(function(){
    // Autocomplétion pour le fomulaire de recherche
    jQuery(function(){
        jQuery("#localisation").autocomplete({
            source: function(request, response){
                var objData = {};
                objData = { ville: request.term };
                jQuery.ajax({
                    url: "/wp-content/themes/mda/php/AutoCompletionCPVille.php",
                    dataType: "json",
                    data: objData,
                    type: 'POST',
                    success: function(data){
                        response(jQuery.map(data, function(item){
                            return{
                                label: item.codePostal + ", " + item.ville_reelle,
                                value: function(){
                                    jQuery('#ville').val(item.ville_reelle);
                                    return item.codePostal+' '+item.ville_reelle;
                                }
                            }
                        }));
                    }
                });
            },
        });
    });
});


Cependant ce code ne prend pas en compte les accent.
J'ai vu ce code sur http://jqueryui.com/autocomplete/#folding mais je n'arrive pas à combiner les 2..

jQuery().ready(function(){
    jQuery(function(){
        var names = [ "sucé", "bénodet", "forêt-fouesnant" ];
        var accentMap = {
            "á": "a",
            "à": "a",
            "â": "a",
            "ä": "a",
            "ç": "c",
            "é": "e",
            "è": "e",
            "ê": "e",
            "ë": "e",
            "î": "i",
            "ï": "i",
            "ô": "o",
            "ö": "o",
            "ù": "u",
            "û": "u",
            "ü": "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;
        };
         $( "#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 ) );
                }) );
            }
        });
    });
});

Quelqu'un aurait une solution ?

Merci d'avance

  • Partager sur Facebook
  • Partager sur Twitter
Intégratrice Web WordPress - Magento - Prestashop // Carpe Diem
28 mai 2014 à 10:48:17

Personne ?
  • Partager sur Facebook
  • Partager sur Twitter
Intégratrice Web WordPress - Magento - Prestashop // Carpe Diem
2 juin 2014 à 14:58:03

Bon, avec de l'aide, j'ai fini par trouvé, il faut faire une fonction qui remplace tout les accents et rechercher SANS les accents.

Voici le code, si jamais ça intéresse quelqu'un :

function accent(chaine){
	var accentMap = {
			"á": "a",
			"à": "a",
			"â": "a",
			"ä": "a",
			"ç": "c",
			"é": "e",
			"è": "e",
			"ê": "e",
			"ë": "e",
			"î": "i",
			"ï": "i",
			"ô": "o",
			"ö": "o",
			"ù": "u",
			"û": "u",
			"ü": "u",
			"Â": "A",
			"Ä": "A",
			"À": "A",
			"Ç": "C",
			"Ê": "E",
			"Ë": "E",
			"É": "E",
			"È": "E",
			"Î": "I",
			"Ï": "I",
			"Ô": "O",
			"Ö": "O",
			"Û": "U",
			"Ü": "U",
			"Ù": "U"
		};
	
	for (var id in accentMap){ 
		chaine=chaine.replace(id, accentMap[id]);
	}
	return chaine;
}

jQuery().ready(function(){
	// Autocomplétion pour le fomulaire de recherche http://x-zolezzi.developpez.com/tutoriels/web/autocompletion/
	jQuery(function(){
		$("#localisation").autocomplete({
			source: function (request, response){
					var objData = {};
					chaine=request.term;
					objData = { ville: request.term=chaineSansAccent=accent(chaine)};
					$.ajax({
						url: "AutoCompletionCPVille.php",
						dataType: "json",
						data: objData,
						type: 'POST',
						success: function (data){
							response($.map(data, function (item){
								return {
									label: item.codePostal + ", " + item.ville_reelle,
									value: function (){
										// Remplissage INSEE
										jQuery('#code_insee').val(item.code_commune);
										
										// Remplissage Lon/Lat
										jQuery('#longitude').val(item.longitude);
										jQuery('#latitude').val(item.latitude);
										
										// Remplissage Ville (pour titre)
										jQuery('#ville_reelle').val(item.ville_reelle);
										
										jQuery('#ville').val(item.ville_reelle);
										return item.codePostal+' '+item.ville_reelle;
									}
								}
							}));
						}
					});
			},
			minLength: 3,
			delay: 600
		});
	});
});

Bonne journée

-
Edité par Melusine29 2 juin 2014 à 14:58:27

  • Partager sur Facebook
  • Partager sur Twitter
Intégratrice Web WordPress - Magento - Prestashop // Carpe Diem
31 mai 2024 à 16:38:10

@dupced Bonjour, pour dire merci pas la peine de déterrer un sujet, vous avez la possibilité de cliquer sur les pouces levés des messages qui vous ont aidés.

Déterrage

Citation des règles générales du forum :

Avant de poster un message, vérifiez la date du sujet dans lequel vous comptiez intervenir.

Si le dernier message sur le sujet date de plus de deux mois, mieux vaut ne pas répondre.
En effet, le déterrage d'un sujet nuit au bon fonctionnement du forum, et l'informatique pouvant grandement changer en quelques mois il n'est donc que rarement pertinent de déterrer un vieux sujet.

Au lieu de déterrer un sujet il est préférable :

  • soit de contacter directement le membre voulu par messagerie privée en cliquant sur son pseudonyme pour accéder à sa page profil, puis sur le lien "Ecrire un message"
  • soit de créer un nouveau sujet décrivant votre propre contexte
  • ne pas répondre à un déterrage et le signaler à la modération

Liens conseillés

Je ferme ici.

  • Partager sur Facebook
  • Partager sur Twitter