2016-11-22 3 views
1

Ich benutze jQuery Autocomplete mit mehreren Eingabefeldern miteinander verbunden, dh beim Einfügen eines Wertes in der ersten Eingabefeld und Fokus verlieren, werden die folgenden Eingabefelder betroffen (dh Werte sind entsprechend gefiltert). Dann kann ich ein anderes Eingabefeld fokussieren und einen Wert eingeben, so dass beide Filter angewendet werden (typisierter Wert und entsprechend dem vorherigen Eingabefeldwert).Verständnis, wenn ein Eingabefeld Bean gelöscht und neue Eingabe eingefügt

Auch ich Setup ein Ereignis für alle Eingabefelder Reinigen, wenn alle Zeichen aus einem Eingabefeld zu löschen:

if (inputBoxTrigger.val().length == 0 && (event.keyCode == BACKSPACE || event.keyCode == DELETE)) { 
     jQuery.each(inputObjectArray, function (i, obj) { 
      obj.val(""); 
     }); 
    } 

Also, ich Bereinigungs alles, wenn ich die letzte Zeichen in dem aktuellen Eingabefeld nur entfernt. Allerdings konnte ich Folgendes tun: 1) Wählen Sie den Inhalt eines Eingabefeldes (zB über Maus oder Drücken der Shift) 2) Starten Sie etwas in diesem Eingabefeld eingeben, ohne Backspace Tasten oder löschen

In diesem Fall das Eingabefeld wird gelöscht und ein neues Zeichen wird eingefügt, aber ich erlebe diese Situation nicht. Ich habe versucht, die Überprüfung auf die Rücktaste/delete Taste keyCode fallen lassen, aber es funktioniert nicht: wenn ein Eingabefeld verlassen, ist das neue Eingabefeld leer, so dass ich alles bereinigen (einschließlich der vorherigen Eingabefelder).

Irgendwelche Ideen?

+0

können Sie nicht nur eine Änderung der Zeichenzahl in das Eingabefeld wird verwendet, erkennen und wenn es fällt, Sie haben Ihren Fall, alle zu klären? – Matthias

+0

Sie meinen, dass, wenn die Textlänge auf 1 fällt, ich alles löschen könnte? Das ist nicht machbar: Ich hätte etwas falsch gemacht, z. Zuhause statt zu Hause, und gehe gerade zurück, um mein zweites h zu entfernen; wenn ich von "hh" zu "h" gehe, würde ich das Ereignis auslösen, was nicht das ist, was ich will. Ich muss nur dazu, wenn Sie den gesamten Eingabetext durch ein neues Zeichen ersetzen. – Manu

+0

Ich sehe nicht, warum die Boxen ein anderes Verhalten haben sollten, wenn Sie von "hhome" zu "h" gehen, z. "whatsup" bis "h" (durch Auswählen und Tippen von h). Aber wenn Sie das wirklich wollen, vermute ich, dass Sie möglicherweise feststellen müssen, ob Zeichen ausgewählt sind, und dann erkennen, ob alle Zeichen ausgewählt sind und ob die Zeichenanzahl 1 wird. Konnte auch erkennen, ob die Anzahl der Zeichen 1 ist und ob sie dort liegt war eine Rücktaste oder nicht (wenn Rücktaste haben Sie die "Hhome" -Fall, wenn nicht, haben Sie die "whatsup" -Fall) – Matthias

Antwort

0

Vielleicht ein komplexerer Algorithmus zum Erkennen der String-Ähnlichkeit?

Wenn Zeichenketten sehr ähnlich sind, kann es eine einfache Korrektur sein, wenn nicht, dann kann es ein völlig anderer Gegenstand sein und Sie können das Formular zurücksetzen. Sie können auch einen Längen-/Richtungsvergleich mit einem Ähnlichkeitsvergleich verketten, um eine Feinabstimmung vorzunehmen (d. H., Den Ähnlichkeitsvergleich nur durchzuführen, wenn Sie von einer langen Zeichenfolge zu einer anderen langen Zeichenfolge wechseln, ...).

Auf Zeichenfolge Ähnlichkeit:

Compare Strings Javascript Return %of Likely

javascript text similarity Algorithm

http://andrew.hedges.name/experiments/levenshtein/

+0

Das mag eine gute Lösung scheinen , aber Zeichenfolge Ähnlichkeit mit 2 oder 1 Zeichen scheint mir zu kompliziert. Ich würde erwarten, dass irgendeine Art von Ereignis abzufangen ... – Manu

Verwandte Themen