2017-12-28 9 views
0

Dies ist mein Code ... Das Problem ist, dass, wenn ich auf Autovervollständigen Vorschlag klicken Sie die von mit nur die Informationen, die ich geschrieben habe, um Eingabe und nicht das ausgewählte Autocloseted Wort. Ich schätze, weil das Formular schneller übermittelt wird, wird die Eingabe automatisch vervollständigt. Aber wie löse ich es? HierJquery Autocomplete sendet Formular vor der Autovervollständigung der Eingabe

<form id="searchForm" action="../chat/chat.php" method="POST"> 
     <input id="search" type="text" name="getter" value="" placeholder="Search for user"> 
    </form> 
    <script type="text/javascript" src="http://code.jquery.com/jquery-1.9.1.min.js"></script> 
    <script type="text/javascript" src="http://code.jquery.com/ui/1.10.1/jquery-ui.min.js"></script> 
    <script type="text/javascript"> 
     $(function() { 

      $("#search").autocomplete({ 
       source: "selector.php", 
       minLength: 1, 
       select: function(event, ui) { 
        $("#searchForm").submit(); 
       } 
      }); 
     }); 

ist die selector.php ... ich weiß nicht, ob Sie es brauchen, aber immer noch->

<?php 

include_once "../additional_code/dbh.inc.php"; 

$return_arr = array(); 

$searchTerm = $_GET["term"]; 

$sql = "SELECT user_uid FROM users WHERE user_uid LIKE '%" . $searchTerm . "%' "; 

$result = mysqli_query($conn, $sql); 

while($row = mysqli_fetch_assoc($result)) { 
    $return_arr[] = $row['user_uid']; 
} 
echo json_encode($return_arr); 
+0

Vielleicht möchten Sie '$ (" # search "). Val (ui.item.value);' Bevor Sie senden? – Snowmonkey

+1

[Hier ist Ihre Antwort] (https://stackoverflow.com/questions/2198539/jquery-autocomplete-submit-form-on-selection) auf anderen Post in StackOverflow. –

Antwort

2

Das Problem ist die select-Ereignis scheint eher als prä- zu gestalten, Verarbeitungsereignis. Sie können Ihre eigene benutzerdefinierte Auswahllogik implementieren und/oder die Standardlogik abbrechen, indem Sie false aus der Methode zurückgeben. Sie können auch sicherstellen, dass die Eingabe vor dem Senden des Formulars ausgefüllt wird.

1

Ich hatte dies als Kommentar gepostet, aber ich denke, es verdient wirklich, eine eigene Antwort zu sein. Dies ist eigentlich ein EASY Gotcha in fallen.

Während Muhammad Recht hat, dass die Auswahlfunktion ein "Vorprozessor" ist, entfernen Sie das Standardauswahlverhalten (d. H. Füllen das ausgewählte Eingabefeld tatsächlich aus). Wenn Sie einen eigenen Select-Handler definieren, stellen Sie sicher, dass Sie das Feld ausfüllen, bevor Sie das Formular absenden, oder führen Sie eine Art prototype.apply() -Ding aus.

Verwandte Themen