Bonjour,
Je cherche à faire fonctionner jQuery Autocomplete avec un renvoi de tableau multidimensionnel car j'aimerai remplir 2 champs input lors de la sélection d'un item dans le menu.
Quand mon tableau est unidimensionnel cela fonctionne parfaitement, mais comment indiquer à "Autocomplete" se qu'il doit afficher de mon tableau ?

Voici le tableau JSON renvoyé par le fichier PHP:

{"id":"2","name":"Bob"},{"id":"5","name":"Jean"},{"id":"7","name":"Leon"}]

Le code jQuery :

$("input[name=in-name]").autocomplete({
    source: "ACName.php",
    minLength: 1,
    dataType: "json",
    change: function(event, ui) { console.log(ui); }
});

Merci

2 réponses


tekyo11
Auteur
Réponse acceptée

J'ai trouvé la solution si ça interresse quelqu'un :

  • Avec jQuery
    
    $("#form_WS").on("focus", "input[id^=FL]", function(e){
        $(this).autocomplete({
            source: "ACNameWorker.php",
            minLength: 2,
            select : function(event, ui){
                $(this).val(ui.item.shortName)
                $(this).prev("input").val(ui.item.value);
                $(this).next("input").val(ui.item.residence);
                return false;
            }
        });
    });
- Puis PHP
$return_arr[]  = array(
        'label'             => $d['firstname']." ".$d['lastname'],
        'shortName' => $d['FLw'],
        'value'             => $d['id'],
        'residence'     => $d['residence']);

Le tableau JSON n'est pas bon, par défaut jQuery autocomplete cherche la clé "value".

Donc ici, il faut rajouter une ligne dans ton PHP pour dire :

$aTableauFinal'value'] = $aTableauOriginal'name']

En bouclant avec un foreach, pour return ensuite le tableau $aTableauFinal