2016-07-07 23 views
0

Ich benutze die automatische Vervollständigung von jquery und die Werte werden über SQL durch Ajax-Aufrufe aufgefüllt. Ich möchte die Eingaben in diesem Feld auf diejenigen beschränken, die sich auf der Autocomplete-Liste befinden. Wenn der SQL-Wert "A, B, C" zurückgegeben wird, sollte der Wert D nicht akzeptiert werden.Jquery Autocomplete-Feldwerte

Ich kann dies tun, indem ich zusätzliche Abfragen Backend, aber ich frage mich, ob es einen einfacheren Weg und einen effizienteren Weg, dies zu erreichen ist.

+0

Sie möchten also die Benutzereingabe validieren? –

+0

Ja, im Idealfall würde ich das gerne machen. Ich finde, dass die Verwendung eines Dropdown-lsit ist besser, aber Autocomplete-Eingabe sieht nur ästhetisch besser für mich @AndrosRex –

Antwort

0

Ja, Sie können die Benutzervalidierung auf der Clientseite durchführen. Sie können leicht überprüfen, ob der Wert übergeben wird und keiner der angezeigten Werte entspricht, eine Art "Fehler" -Meldung anzeigen und .preventDefault() verwenden, um das Senden der Daten zu stoppen. Dies ist jedoch nur für eine bessere Benutzererfahrung. Jeder kann den JS-Code noch ändern und trotzdem die ungültigen Daten senden. Sie müssen diese Validierung nicht unbedingt durchführen - die Benutzer können auch ohne sie auskommen.

Aus diesem Grund ist die Validierung mit dem Ziel der Sicherheit und des Fehlens von Fehlern auf der Serverseite. Wenn ein Benutzer durch das Senden ungültiger Daten eine Tabelle oder sogar die gesamte Datenbank beschädigen kann, müssen Sie diese auch serverseitig validieren.

+0

Derzeit validiere ich es, indem Sie eine andere Abfrage dann überprüfen, ob der übermittelte Wert in der Liste von der Abfrage für die Autovervollständigung zurückgegeben wird . Ich habe mich nur gefragt, ob es eine einfache js/jquery-Funktion wie .onlySourceFields: true oder etwas Ähnliches gibt (vielleicht sogar eine javascript/jquery-Funktion, die nicht unbedingt eine andere Abfrage ausführen müsste, verwende einfach Werte aus der Autocomplete-Liste). Ich denke, dass ich eine andere Abfrage zu überprüfen könnte eine unnötige Belastung in meiner Datenbank sein. Wenn es keinen anderen Weg gibt, dies zu tun, dann würde ich einfach bei meiner derzeitigen Implementierung bleiben. Thx –

+0

@Bennjoe Mordeno Warum haben Sie keine Liste in Ihrem JS-Code, in der Sie die Ergebnisse der aktuellen Autovervollständigung behalten, also während der Validierung, alles, was Sie tun, ist zu testen, ob der Eingabewert irgendetwas darin entspricht? –