Domanda

Sto utilizzando il widget di dialogo jquery per visualizzare una casella modale.Tuttavia, quando si preme F5, mentre la finestra modale è aperta non avviene alcun aggiornamento.Qualche idea?

Aggiornamento interessante:

Prova questa demo: http://jqueryui.com/demos/dialog/#modal-messageOra, quando il focus è sul pulsante "ok", l'aggiornamento (F5) funziona, tuttavia quando il pulsante non ha il focus, non funziona.

Aggiornamento 2

In realtà possiamo semplicemente aggiungere qualsiasi tipo di controllo alla finestra di dialogo, impostare l'altezza e la larghezza su 0 css e impostare il focus su di esso per far funzionare l'aggiornamento.Questa però non è la soluzione migliore.Sto ancora cercando di far funzionare la pressione dei tasti.

Aggiornamento 3

Quanto segue sembra funzionare per ora:

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

Soluzione

Questo sembra essere un problema comune e non ho visto una risposta soddisfacente. Ci sono un paio di domande simili su Stack Overflow e la risposta migliore che ho visto è quello di catturare le chiavi e attivare l'azione da soli (questo è stato per entrare innescare un pulsante, in modo F5 per aggiornare potrebbe essere più difficile) l'ho visto me stesso in un progetto su cui sto lavorando troppo.

Ho il sospetto che l'impostazione modale su false potrebbe aiutare, ma non ho ancora provato.

Modifica:

Ho trovato questo sulla linea 539 di ui.dialog.js:

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

Rimozione del keydown e keypress da lì sembrava consentire normali tasti del browser per lavorare. Ora il mio assomiglia a questo:

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

Non so che cosa la funzionalità avrei rimosso in questo modo. L'unico posto gli eventi sembrano essere utilizzata è on line 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);
});

Sarebbe bello ottenere questo riparato nella versione ufficiale, se possibile.

Altri suggerimenti

E 'la finestra di dialogo la disattivazione del il tasto F5 catturando l'evento keypress e fermando la sua propagazione per il 'F5'?

Controllare il codice per la cattura di pressione dei tasti di questo tipo. Questo spiegherebbe un sacco!

Ho avuto problemi simili, ma ho scoperto di aver inserito un "return false;", che impediva la registrazione di tutte le altre chiavi.Ad esempio, il "return false" di seguito impedirà il riconoscimento di tutti gli altri tasti (come F5) tranne xxx e yyy.

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

Quindi basta eliminare il "return false".

La soluzione è semplice, basta concentrarsi su un elemento del modulo della vostra finestra di dialogo modale. Più spiegazione su questo link :

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top