2013-03-12 3 views
0

J'ai généré des données à partir d'une requête MySQL avec lesquelles je veux faire deux choses. Les données sont un tableau de noms et d'identifiants.Analyse de la saisie semi-automatique jQuery

D'abord, je veux utiliser la partie nom pour une saisie semi-automatique jQuery, de sorte que le nom est ce que vous pouvez sélectionner dans le champ. Deuxièmement, je veux tirer sur sélectionner dans la saisie semi-automatique quelque chose qui va placer l'ID de l'élément sélectionné dans un champ caché.

Voici mon JQuery:

$("#contact").autocomplete(
       source: function(request, response){ 
           $.ajax({ 
             url: "ajax/grabdata.php?", 
             type: "GET", 
             data: request, 
             success: function (data) { 
              response($.map(data, function (el) { 
               return { 
                label: el.item.name, 
                value: el.item.id 
               }; 
              })); 
             } 
            }); 
          }, 
          width: 260, 
          matchContains: true, 
          selectFirst: false, 
          select: function(event, ui){ 
            $('#contact').val(ui.label); 
            $('#id').val(ui.value); 
          } 
        }); 

Voici comment je saisis les données en PHP (grabdata.php):

 $sql = "SELECT DISTINCT contacts.id, contacts.firstname, contacts.lastname FROMcontacts WHERE (firstname LIKE '%$q%' OR lastname LIKE '%$q%')"; 
     $rsd = mysql_query($sql); 
     while($rs = mysql_fetch_array($rsd)) { 
     $kdata[] = array(
      "name" => $rs['firstname'].' '.$rs['lastname']."\n", 
      "id" => $rs['ID']."\n", 
    ); 
     $dataset[] = $kdata; 
     } 

je peux obtenir les données, mais je vais avoir du mal à parsing dans ce que je veux. Le nom doit être sélectionnable dans le champ de saisie semi-automatique, et l'ID doit être rempli en fonction du nom choisi.

Répondre

0

Pour autant que je peux voir, vous n'utilisez pas les paramètres de la méthode de sélection que vous devez:

select: function(event, ui){ 
     $('#contact').val(ui.item.label); 
     $('#id').val(ui.item.value); 
    } 

Il vous manque le « .item ». Vérifiez la documentation: http://jqueryui.com/autocomplete/#remote

+0

Le reste de ma notation est-il correct? – user1230790

+0

Je ne peux pas parler de la partie PHP, mais la saisie semi-automatique semble correcte. – Coz