2016-03-24 10 views
0

Ich habe eine <div> mit contenteditable=true. Ich lege eine Unschärfe Ereignis, so dass die Eingabe aufgezeichnet erhalten, sobald der Benutzer das Feld verlässt:Fokus auf Eingabe und Autovervollständigung

$(document).on('#my_div'n 'blur', function() {....... 

ich zu diesem Feld legen Sie eine Jquery Autocomplete:

$('#my_div').autocomplete({ source : emails_directory }); 

Die Autocomplete funktioniert gut und füllt das Feld, wenn geklickt.

Das Problem hier ist, dass mein Blur-Ereignis nur die ersten Buchstaben aufzeichnen, die ich vor dem Auslösen der Autocomplete eingegeben habe.

Welches Ereignis sollte ich verwenden, um den Feldwert aufzuzeichnen, wenn Autovervollständigung nicht verwendet wird, oder den Wert der Autovervollständigung, falls verwendet.

Beispiel: Ich möchte [email protected] von der Autovervollständigung erhalten. Ich tippe "te" und die vollständige E-Mail zeigt in der Autocomplete. Ich wähle es in der Autocomplete-Liste und es ist in das Feld ausgefüllt. Meine Unschärfe Ereignisaufzeichnungen 'te'. Ich möchte das nicht und möchte stattdessen [email protected] aufzeichnen

Ex2: Ich möchte einen Wert eingeben, der nicht in der Autocomplete-Quelle ist. Ich tippe [email protected], keine automatische Vervollständigung wird angezeigt. Auf Unschärfe wird der volle Wert aufgezeichnet.

Antwort

1

Sie können das Keydown-Ereignis für ENTER bei Unschärfe auslösen. So können Sie den Wert der automatischen Vervollständigung, wenn vorhanden:

$(document).on('#my_div', 'blur', function() { 
     var keyEvent = $.Event("keydown"); 
     keyEvent.keyCode = $.ui.keyCode.ENTER; 
     $(this).trigger(keyEvent); 
     ...... 
}); 

und nicht auch Autofokus vergessen:

$('#my_div').autocomplete(autoFocus: true, { source : emails_directory }); 
+0

Dank. Aber ich verstehe es nicht. Sie können die Autocomplete auch durch Anklicken auswählen, würde es trotzdem einen ENTER-Keydown auslösen? –

+0

Ja, aber es sollte nichts ändern. Wert würde gleich bleiben –

+0

ok werde versuchen, danke –