2010-11-18 19 views
3

Wenn der Benutzer auf einem bestimmten Element fokussiert, zeige ich eine Taste speichern. Beim Fokussieren entferne ich die Schaltfläche "Speichern".jQuery- focusOut nur, wenn ein anderes Element geklickt nicht

alt text

Der Benutzer kann die Eingabe entweder durch Schlagen Rückkehr einreichen oder speichern klicken. Wenn sie auf die Schaltfläche zum Speichern klicken, verliert die Eingabe den Fokus und die Schaltfläche zum Speichern wird entfernt, sodass der Klick nicht mehr registriert wird. Kann ich im Fokusfokus sagen, ob auf die Schaltfläche Speichern geklickt wurde?

In meiner Fokus-Funktion kann ich so etwas wie diese:

 $('#save_button').click(function(){ 
      saveEditingField(this); //save input 
      $('#save_button').die("click"); 
     }); 

     $('.editing').focusout(function(e) { 
      $('#isediting').attr('value','false'); 
      $('#edit_controls').remove() 
     }); 

Ich habe versucht, eine Verzögerung zum Entfernen Hinzufügen(), aber wenn zwischen den Eingängen Tabbing zeigt es mehrere Tasten speichern (während der andere sind sind entfernt).

Irgendwelche Ideen?

+0

würde es helfen, .hide() anstelle von .remove() zu verwenden? –

+0

Auch bei Verstecken wird das Element vor der Registrierung des Klicks ausgeblendet. – christo16

Antwort

6

Ich glaube, Sie nur eine kleine Auszeit zwischen focusout benötigen und Entfernen/Ausblenden auf die Schaltfläche.

+0

Das Zeitlimit muss mindestens 100 sein, um den Klick zu registrieren, der beim Tab-Tab zwischen den Eingängen immer noch mehrere Speicherschaltflächen anzeigt. – christo16

+0

Also verstecken Sie einfach alle Buttons, wenn focusin ausgelöst wird (bevor Sie die Schaltfläche hinzufügen, die zu der speziellen Eingabe gehört). –

0

Erstellt ein div des focusout Ereignis in diesem div

+0

Gute Idee, funktioniert aber nicht – anthonygore

4

Sie können überprüfen, ob die Maus über die Schaltfläche auf focusout ist, bevor Sie die Taste versteckt. Beiden Elemente (die Eingabe von Text und die Schaltfläche) und binden enthält

Proof-of-Concept hier: http://jsfiddle.net/dnsEM/

Ein kleines Problem bei dieser Implementierung ist, dass Sie die Taste save nicht verschwindet, wenn das Eingabefeld verliert Fokus, während die Maus über die Schaltfläche und wird nur auf Maus versteckt werden.

Verwandte Themen