Frage

Ich bin mit dem jquery Dialog-Widget eine modale Feld anzuzeigen. Jedoch wenn Sie die Taste F5, während das modale offen ist keine Auffrischung geschieht. Jede Idee?

Interessante Update:

Mit dieser Demo: http://jqueryui.com/demos/dialog/#modal- Nachricht Nun, wenn der Fokus auf der Schaltfläche „OK“ ist, dann ist die Refresh (F5) funktioniert, aber wenn die Schaltfläche den Fokus nicht hat, dann tut es nicht.

Update 2

Wir können tatsächlich fügen Sie einfach jede Art von Kontrolle in den Dialog, stellen Sie die Höhe und Breite auf 0 CSS und den Fokus auf den Refresh zum Laufen zu bringen. Dies ist nicht die beste Lösung, though. Ich versuche immer noch keypress zum Laufen zu bringen.

Update 3

Die folgende scheint jetzt zu funktionieren:

$(document).keydown(function(e)
{
    if (e.which == 116) // key code of the F5 button
    {
        document.location.reload();
     }
}); 
War es hilfreich?

Lösung

Dies scheint ein allgemeines Problem zu sein, und ich habe nicht eine befriedigende Antwort gesehen. Es gibt ein paar ähnliche Fragen auf Stack-Überlauf und die beste Antwort, die ich gesehen habe, ist der Schlüssel zu erfassen und lösen die Aktion selbst (dies wurde eingeben, für eine Schaltfläche Auslösen, so f5 möglicherweise schwieriger zu aktualisieren) Ich habe es selbst gesehen in ein Projekt arbeite ich auch an.

Ich vermute, dass modal zu falscher Einstellung helfen könnte, aber ich habe es noch nicht probiert.

Edit:

Ich fand dies auf der Linie 539 von ui.dialog.js:

events: $.map('focus,mousedown,mouseup,keydown,keypress,click'.split(','),

die keydown und keypress von dort entfernen schien normale Browser-Tasten zu erlauben zu arbeiten. Jetzt sieht mein wie folgt aus:

events: $.map('focus,mousedown,mouseup,click'.split(','),

Ich weiß nicht, welche Funktionen ich habe, indem Sie diese entfernt würde. Der einzige Ort, an Veranstaltungen genutzt zu werden scheinen auf Linie 549:

$(document).bind($.ui.dialog.overlay.events, function(event) {
    var dialogZ = $(event.target).parents('.ui-dialog').css('zIndex') || 0;
    return (dialogZ > $.ui.dialog.overlay.maxZ);
});

Es wäre schön, dies in der offiziellen Version, wenn möglich behoben.

Andere Tipps

Ist das Dialogfeld diabling die Taste F5, um das KeyPress-Ereignis zu erfassen und die weitere Verbreitung für die ‚F5‘ zu stoppen?

Überprüfen Sie den Code für keypress Aufnahmen dieser Art. Dies würde eine Menge erklären!

ich ähnliche Probleme gehabt, aber entdeckte ich in einem „return false;“ gesetzt hatte, die anhielt alle anderen Tasten registriert. Zum Beispiel wird die „return false“ unter alle anderen Tasten nicht mehr (wie F5) außer xxx und yyy erkannt zu werden.

$(document).keydown(function(e){
if (e.keyCode == xxx) {/*do something*/}
if (e.keyCode == yyy) {/*do something*/}
return false;
});

So nehmen Sie nur die "return false".

Lösung ist einfach, man muss nur Ihr modales Dialogfeld in einem Formular-Elemente konzentrieren. Mehr explication auf diesem Link :

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top