Starten Sie die automatische Vervollständigung, ohne ein Formular zu senden
Ich Schreibe an einem sehr einfachen web-app mit drei text-Eingaben. Die Eingaben verwendet werden, um erzeugen ein Ergebnis, aber alle Arbeit getan ist in Javascript, so gibt es keine Notwendigkeit, um ein Formular Absenden. Ich bin versuchen zu finden ein Weg, um den browser zum speichern der Eingabe die Werte für autocomplete, wie es wäre, wenn Sie in einer form vorgelegt wurde.
Ich habe versucht, die Eingänge autocomplete="on" manuell, aber ohne ein Formular zu senden, der browser hat keine Möglichkeit zu wissen, Wann es die Werte zu speichern, so hat dies keine Auswirkung.
Habe ich auch schon versucht, das einwickeln der Eingaben in einem Formular mit onSubmit="return false;", aber verhindert das Formular tatsächlich abschicken erscheint, auch verhindern, dass der browser das speichern Ihrer Eingaben' Werte.
Ist es natürlich möglich, manuell zu benutzen, localStorage oder einem cookie zu bestehen Eingänge und erzeugen dann AutoVervollständigen-Tipps von denen, aber ich bin der Hoffnung, eine Lösung zu finden, die Hähne in native browser-Verhalten, statt Sie zu duplizieren, von hand.
InformationsquelleAutor der Frage AmericanUmlaut | 2013-03-17
Du musst angemeldet sein, um einen Kommentar abzugeben.
Getestet mit Chrome, IE und Firefox:
In Ihrem Javascript-trigger the submit, z.B.
$("form").submit();
$("#submit_button").click()
(aktualisiert von Kommentaren)Sie brauchen, um wieder eine leere Seite /content/blank für get & post (about:blank hat bei mir nicht funktioniert, aber YMMV).
InformationsquelleAutor der Antwort laktak
Wir wissen, dass der browser speichert seine Informationen nur, wenn das Formular abgeschickt wirdwas bedeutet, wir können nicht kündigen, es mit
return false
odere.preventDefault()
Was wir tun können ist, machen es die Daten übermitteln zu nirgendwo ohne Neuladen einer Seite. Wir können tun, dass mit einer
iframe
Demo auf JSfiddle (getestet in IE9, Firefox, Chrome)
Profis über die derzeit akzeptierte Antwort:
Es ist keine zusätzliche javascript. Sie normalerweise befestigen Sie einen handler zu
submit
- Ereignis des Formulars zum senden der XHR-und nicht stornieren.Javascript-Beispiel
No-javascript-Unterstützung
Idealerweise sollten Sie lassen Sie das Formular arbeiten, ohne javascript zu, so entfernen Sie die
target
und setzen Sie die Aktion auf einer Seite, erhalten Sie Ihre Daten in das Formular.Und dann einfach fügen Sie es per javascript, wenn Sie fügen Sie die
submit
Veranstaltung:InformationsquelleAutor der Antwort bfred.it
Habe ich noch nicht getestet, aber es könnte funktionieren, wenn Sie das Formular abschicken, um einen versteckten iframe (so dass das Formular tatsächlich abgeschickt aber die aktuelle Seite nicht neu geladen).
InformationsquelleAutor der Antwort Alex
Vielleicht können Sie diese Twitter Typeahead...ist eine sehr komplette Implementierung des autocomplete, mit lokalen und remote-prefetch, und diese machen die Verwendung von localStorage zum fortbestehen Ergebnisse und es wird auch zeigen, einen Hinweis in das input-element...der code ist einfach zu verstehen und wenn Sie nicht wollen, verwenden Sie die komplette jquery-plugin, ich denke, man kann sich den code, um zu sehen, wie Sie das erreichen, was Sie wollen...
InformationsquelleAutor der Antwort IJMorgado
Aus, was ich gesucht.. scheint es, müssen Sie identifizieren die Namen. Einige standard-Namen wie 'name', 'email', 'Telefon', 'Adresse' werden automatisch gespeichert in den meisten browser.
Gut, das problem ist, dass Browser behandeln diese Namen differenetly. Zum Beispiel, hier ist chrome regex:
Aber chrome wird
x-autocompletetype
so können Sie den Namen anpassen, und legen Sie eine AutoVervollständigen-Typ, aber ich glaube, das ist nicht für benutzerdefinierte Felder..Hier ist chrome experiment
Und es ist etwas anderes, im IE, Opera und Mozilla. Für jetzt, Sie können versuchen, die iframe-Lösung gibt, so kannst du es abschicken. (Vielleicht ist es etwas semi-standard)
Gut, mehr kann ich nicht helfen.
InformationsquelleAutor der Antwort aIKid
Für diejenigen, die lieber keine änderung der bestehenden form Funktionen, die Sie verwenden können, eine zweite form zu erhalten Kopien aller form-Werte, und senden Sie dann eine leere Seite vor dem eigentlichen form übermittelt. Hier ist eine voll testbare HTML-Dokument mit JQuery Mobile und demonstriert die Lösung.
Den
save_autofill
Funktion braucht nur aufgerufen zu werden, auf Ihrem Haupt-form-submit-button. Wenn Sie ein Skript-Funktion, die übermittelt Ihre form, Ort, rufen Sie nach dersave_autofill
nennen. Sie müssen einen Namen "Textfeld" in Ihremhidden_form
für jeden in Ihrem Haupt-form.Wenn Ihre Website SSL verwendet, dann ändern Sie die URL für
about:blank
mithttps://about:blank
.InformationsquelleAutor der Antwort Carter Medlin
Können Sie jQuery verwenden zu bestehen AutoVervollständigen-Daten in den localstorage, wenn focusout und wenn focusin es autocompletes auf den Wert beibehalten.
d.h.
Können Sie auch binden Persistenz-Logik auch andere Veranstaltungen je nach Ihrer Anwendung-Anforderung.
InformationsquelleAutor der Antwort Prakash Bhagat
Stellen Sie sicher, dass die übermittlung des Formulars per POST. Wenn Sie die übermittlung per ajax, tun
<form autocomplete="on" method="post">
weglassen deraction
Attribut.InformationsquelleAutor der Antwort garageàtrois
kann man mit "." in beiden iframe src und form Aktion.
InformationsquelleAutor der Antwort max zhou