2016-12-28 3 views
0

Ich habe eine Autocomplete-Funktion, die gut funktioniert, aber wo ich die Dropdown-Details ein wenig erweitern möchte. Es sieht wie folgt aus:Jquery Autocomplete Anzeige mehr Details in Dropdown

Datafile (form lookup.php):

if ($db) 
{ 

    $fetch = mysqli_query($db,"SELECT * FROM uni_labels where label_name like '%" . $_GET['term'] . "%'"); 

    /* Retrieve and store in array the results of the query.*/ 
    while ($row = mysqli_fetch_array($fetch, MYSQL_ASSOC)) { 

     $row_array['label'] = htmlspecialchars_decode($row['label_name']); 
     $row_array['lookupid'] = $row['id']; 
     $row_array['address'] = $row['label_address']; 
     $row_array['number'] = $row['label_number']; 
     $row_array['postalcode'] = $row['label_postalCode']; 
     $row_array['country'] = $row['label_country']; 

     array_push($return_arr,$row_array); 
    } 
} 
/* Free connection resources. */ 
mysqli_close($db); 

/* Toss back results as json encoded array. */ 
echo json_encode($return_arr); 

Meine Seite, dass die Daten retreives wie folgt aussieht:

$(function() { 
     $("#step1Name").autocomplete({ 
      source: "/pages/form-lookup.php?country=dk", 
      minLength: 2, 
      select: function(event, ui) 
      { 
       $('#step1Name').val(ui.item.address); 
       $('#lookupid').val(ui.item.lookupid); 
       $('#vej').val(ui.item.address); 
      } 
     }); 
    }); 
<input maxlength="100" type="text" required="required" class="form-control input-lg" name="step1Name" id="step1Name" /> 

Every funktioniert einfach toll, aber ich würde Wie für meine Dropdown-Liste, um $ row_array ['label'] und $ row_array ['address'] anzuzeigen, und wenn ich einen Wert in der Dropdown-Liste auswähle, gibt das Eingabefeld nur den Wert $ row_array ['label'] aus .

In der Daten-Datei Ich habe versucht, die Adresse auf das Etikett, wie dies hinzuzufügen:

in dem Dropdown
$row_array['label'] = htmlspecialchars_decode($row['label_name'])." - ".$row['label_address']; 

Dies zeigt den Wert in Ordnung nach unten, aber wenn die Wahl der Auswahl enthält das Eingabefeld natürlich zu viele Daten, wo ich nur den label_name anzeigen soll.

Kann mir jemand in die richtige Richtung zeigen?

Vielen Dank im Voraus.

Antwort

1

Fügen Sie diese auf Ihrem Autocomplete-Code:

select: function(event, ui) { 
    event.preventDefault(); 
    var name = ui.item.value.split('-')[0]; 
    $("#starter").val(name); 
}, 
focus: function(event, ui) { 
    return false; 
} 

So Ihre aktualisierte zur automatischen Vervollständigung Code wie das sein wird:

$("#step1Name").autocomplete({ 
    source: "/pages/form-lookup.php?country=dk", 
    minLength: 2, 
    select: function(event, ui) { 
     event.preventDefault(); 
     var name = ui.item.value.split('-')[0]; 
     $("#starter").val(name); 
     return false; 
    }, 
    focus: function(event, ui) { 
     return false; 
    } 
}); 
+0

Dank @Aminur, , die den Trick für mich getan hat - ich geändert Code Zeile zu $ ​​("# step1Name"). val (Name); und jetzt ist es perfekt. Danke noch einmal! – MazeyMazey

+0

Sie sind herzlich willkommen –