JQuery - ordre d'execution des actions ajax [Résolu]

Messages postés
30
Date d'inscription
jeudi 14 mai 2009
Dernière intervention
11 février 2011
- 29 mai 2009 à 11:55 - Dernière réponse :
Messages postés
30
Date d'inscription
jeudi 14 mai 2009
Dernière intervention
11 février 2011
- 5 juin 2009 à 10:54
Bonjour à tous,


j'utilise JQuery[ajax] pour gérer l'affichage de tableaux d'informations au parcours des champs d'un formulaire. Au focus, j'affiche le tableau, au blur, j'affiche une page vide.



$("input#Types_clients_id").focus(function(){
 jQuery.ajax({
  
["/cdl/Fichier/infotypesclients
url:"/cdl/Fichier/infotypesclients
]
",
  success:function(msg){
   $("div#aide").html(msg);
  }
 });
});
$("input#Types_clients_id").blur(function(){
 jQuery.ajax({
  
["/cdl/Index/vide
url:"/cdl/Index/vide
]
",
  success:function(msg){
   $("div#aide").html(msg);
  }
 });
});


Mon soucis est que lorsque que je passe d'un champ à un autre, j'ai (théoriquement) mon tableau du champ courant d'afficher, puis la page vide, puis le tableau du champ suivant.


Or, il arrive que cet ordre ne soit pas respecté et que j'ai mon tableau du champ courant d'afficher, puis le tableau du champ suivant, puis la page vide (donc pas le tableau souhaité d'afficher).


Est-il possible possible de gérer l'ordre d'execution des action JQuery[ajax]?
Afficher la suite 

Votre réponse

4 réponses

Meilleure réponse
Messages postés
30
Date d'inscription
jeudi 14 mai 2009
Dernière intervention
11 février 2011
5 juin 2009 à 10:54
3
Merci
La réponse était sous mon nez, il suffisait de définir également une temporisation pour l'ouverture des tableaux légérement supérieur à celle des fermetures.

C'est peut être un peu lourd en code mais au moins je sai qu'elles action s'execute dans quel ordre.

Voici la source pour un champ

$("input#Types_clients_id").focus(function(){
   $(this).delay(125,function(){
jQuery.ajax({
url:"/cdl/Fichier/infotypesclients",
success:function(msg){
$("div#aide").html(msg);
}
});
   });

});
$("input#Types_clients_id").blur(function(){
$(this).delay(100,function(){   
$("div#aide").html("");
});
});

Merci matdev62 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 90 internautes ce mois-ci

Commenter la réponse de matdev62
Messages postés
30
Date d'inscription
jeudi 14 mai 2009
Dernière intervention
11 février 2011
29 mai 2009 à 14:33
Commenter la réponse de matdev62
Messages postés
30
Date d'inscription
jeudi 14 mai 2009
Dernière intervention
11 février 2011
29 mai 2009 à 14:41
0
Merci
En fait non ça marche pas car quand le tableau s'affiche je peux cliquer sur une des valeurs du tableau et son contenu se place dans le champ mais avec cette solution qd je clique sur mon tableau, il disparait et la valeur ne se place pas dans le champ ....
Commenter la réponse de matdev62
Messages postés
30
Date d'inscription
jeudi 14 mai 2009
Dernière intervention
11 février 2011
5 juin 2009 à 09:59
0
Merci
Je suis toujours sur mon petit problème avec jquery. J'ai une petite astuce mais qui à aussi son défaut donc si quelqu'un voit une solution je suis preneur.

Donc pour rappel:
quand je suis sur un champ de mon formulaire, un tableau de choix s'affiche et quand je clique sur un de ces choix la valeur est insérée dans le champ et le tableau reste visible. Lorsque je quitte le champ, le tableau disparé.

Voici mon code pour l'affichage des tableau et leur retrait


$("input#Types_clients_id").focus(function(){

jQuery.ajax({

url:"/cdl/Fichier/infotypesclients",

success:function(msg){

$("div#aide").html(msg);

}

});

});

$("input#Types_clients_id").blur(function(){

$(this).delay(1000,function(){

$("div#aide").html("");

});

});

$("input#Formes_juridiques_id").focus(function(){

jQuery.ajax({

url:"/cdl/Fichier/infoformesjuridiques",

success:function(msg){

$("div#aide").html(msg);

}

});

});

$("input#Formes_juridiques_id").blur(function(){

$(this).delay(1000,function(){

$("div#aide").html("");

});

});

Voici mon code pour l'insertion des valeurs du tableau dans mes champs


var champ=null;

function setCaretToEnd (input) {

setSelectionRange(input, input.value.length, input.value.length);

}

function champsur(obj){

champ=obj;

}

function choisi(val){

champ.value=val;

champ.focus();

setCaretToEnd(champ);

}

J'ai mis en place une temporisation car lorsque je clique sur un choix d'un tableau, je perd le focus et le tebleau disparaissé avant d'insérer le choix dans le champ.

La tempo me permet maintenant de bien insérer mon choix dans le champ mais lorsque je passe d'un champ à un autre mon nouveau tableau s'affiche puis disparait à cause de la tempo de fermeture du tableau précédannt.

Serait-il possible lorsque je me positionne sur un nouveau champ d'interrompre la temporisation et l'action de fermeture du blur du champ précédant ?
Commenter la réponse de matdev62

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.