2016-06-06 1 views
0

J'ai une plus grande boîte de dialogue JQuery UI. A l'intérieur, j'ai des scripts PHP plus volumineux qui remplissent le contenu de la boîte de dialogue. Sur ESCAPE je ferme la boîte de dialogue. Après chaque:JQuery Ajax Timing

$('.editbtn').click(function() { 
    $id  = $(this).attr('name'); 
    var $tabid = $id.split("|"); 
    var $url = "ajax/edit.php?...."; 

    $("#dialog-confirm").load($url); 
    $("#dialog-confirm").dialog("option", "width", $tabid[4]); 
    $("#dialog-confirm").dialog("option", "height", $tabid[5]); 
    $("#dialog-confirm").dialog('open'); 

    $("#dialog-confirm").first().focus(); 
}); 

Je définis le focus.

Parfois, cela ne fonctionne pas parfois. Cela dépend évidemment de l'exécution des scripts PHP. Je vois le dialogue avec l'ancien contenu (après la fermeture) et après un court intervalle de temps le nouveau contenu sélectionné. Tant que le nouveau contenu sélectionné n'est pas affiché, ESCAPE fonctionne. Si la boîte de dialogue contient un nouveau contenu, ESCAPE ne fonctionne pas. Cela signifie en fait que l'écran de dialogue a perdu le focus.

Comment puis-je faire en sorte que la boîte de dialogue ne s'affiche que si le script PHP se termine?

Merci d'avance.

Répondre

1

Vous pouvez simplement le faire en définissant la fonction de rappel complète.

$('.editbtn').click(function() { 
    $id  = $(this).attr('name'); 
    var $tabid = $id.split("|"); 
    var $url = "ajax/edit.php?...."; 

    $("#dialog-confirm").load($url, function() { 
    $("#dialog-confirm").dialog("option", "width", $tabid[4]); 
    $("#dialog-confirm").dialog("option", "height", $tabid[5]); 
    $("#dialog-confirm").dialog('open'); 

    $("#dialog-confirm").first().focus(); 
    }); 
}); 

Et, je vous suggère de définir une variable pour l'objet jQuery pour de meilleures performances.

var confirm = $("#dialog-confirm"); 

confirm.dialog("option", "width", $tabid[4]); 
confirm.dialog("option", "height", $tabid[5]); 
confirm.dialog('open'); 

confirm.first().focus(); 
+0

Merci beaucoup - ça marche! :) – OldMan