Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > AJAX
AJAX Forum sur la programmation AJAX. Avant de poster : Cours AJAX, FAQ AJAX, Toutes les FAQ JavaScript
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 10/01/2008, 10h42   #1
Membre Expert
 
Avatar de riete
 
Homme Thierry
NFC & DevWeb
Inscription : avril 2006
Messages : 1 175
Détails du profil
Informations personnelles :
Nom : Homme Thierry
Âge : 51
Localisation : France

Informations professionnelles :
Activité : NFC & DevWeb
Secteur : Bâtiment

Informations forums :
Inscription : avril 2006
Messages : 1 175
Points : 1 366
Points : 1 366
Par défaut Soumettre formulaire sur OnBlur

Je suis parvenu à faire en sorte de ne pas recharger un formulaire lorsqu'il est soumis par une validation sur la touche entrée.

Maintenant je voudrais pouvoir faire la même chose quand l'utilisateur change de champ avec TAB ou click ailleurs (ils sont exigeant ces utilisateurs ). Voici un résumé du code actuel.
Code :
1
2
3
4
5
6
7
8
9
<script language="JavaScript">
 function my_Ajax(obj){
   ... // Gestion XMLHttpRequest
}
</script>
 
<form onSubmit="return  my_Ajax(this);" name=f1 method="">
  <input classname=input type=text name=t1>
</form>
Voici ce que j'ai essayé qui ne marche pas. Le submit ne lance pas ma functon my_Ajax().
Code :
<input classname=input type=text size=60 name=t1 ONBLUR="submit();">
riete est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/01/2008, 11h13   #2
Responsable Modération
 
Homme
Inscription : janvier 2007
Messages : 9 315
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Secteur : Finance

Informations forums :
Inscription : janvier 2007
Messages : 9 315
Points : 15 609
Points : 15 609
Bonjour,
Code :
onblur="this.form.submit();"
A+
E.Bzz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/01/2008, 15h01   #3
Membre Expert
 
Avatar de riete
 
Homme Thierry
NFC & DevWeb
Inscription : avril 2006
Messages : 1 175
Détails du profil
Informations personnelles :
Nom : Homme Thierry
Âge : 51
Localisation : France

Informations professionnelles :
Activité : NFC & DevWeb
Secteur : Bâtiment

Informations forums :
Inscription : avril 2006
Messages : 1 175
Points : 1 366
Points : 1 366
J'ai essayé, le code:
Code :
onblur="this.form.submit();"
mais le formulaire est soumis au serveur, alors que je voudrais que son traitement soit confié à la fonction my_Ajax(obj).

Ce que je ne comprends, c'est pourquoi dans le cas ou l'on valide avec la touche entrée le formulaire, il passe par la fonction définit en entête de <form>, alors que sur l'appel par "onblur", il suit une processus normal de transmission au serveur?
Ceci est il due au fait qu'il faut lui préciser encore une fois de lancer la fonction my_Ajax(obj) au moment du submit()? dans ce cas je ne sais pas faire.

Merci d'avance

Riete
riete est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/01/2008, 15h09   #4
Responsable Modération
 
Homme
Inscription : janvier 2007
Messages : 9 315
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Secteur : Finance

Informations forums :
Inscription : janvier 2007
Messages : 9 315
Points : 15 609
Points : 15 609
Citation:
Envoyé par riete Voir le message
Ceci est il due au fait qu'il faut lui préciser encore une fois de lancer la fonction my_Ajax(obj) au moment du submit()? dans ce cas je ne sais pas faire.
Code :
onblur="if (my_Ajax(this.form)) this.form.submit();"
A+
E.Bzz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/01/2008, 16h07   #5
Membre Expert
 
Avatar de riete
 
Homme Thierry
NFC & DevWeb
Inscription : avril 2006
Messages : 1 175
Détails du profil
Informations personnelles :
Nom : Homme Thierry
Âge : 51
Localisation : France

Informations professionnelles :
Activité : NFC & DevWeb
Secteur : Bâtiment

Informations forums :
Inscription : avril 2006
Messages : 1 175
Points : 1 366
Points : 1 366
merci E.bzz

je vais essayer, mais entre temps, je ne me suis pas endormi, j'ai trouvé ceci Sur ce lien, il semble que cela veuille fonctionner.
Un des problèmes avec la solution Oreilly c'est qu'il est difficile de traiter plusieurs formulaires au moment du chargement de la page, alors qu'avec "ma" technique il n'y a pas de procédure ONLOAD de traitement.

Le choix est cornélien car la technique Oreilly me semble assez Smart
riete est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/01/2008, 16h22   #6
Responsable Modération
 
Homme
Inscription : janvier 2007
Messages : 9 315
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Secteur : Finance

Informations forums :
Inscription : janvier 2007
Messages : 9 315
Points : 15 609
Points : 15 609
Citation:
Envoyé par riete Voir le message
Le choix est cornélien car la technique Oreilly me semble assez Smart
Un conseil : si ta solution fonctionne, garde la

D'une part car ce sera plus facile pour toi de maintenir ton code plutôt que celui "d'un autre".

Et d'autre part, je ferais moyennement confiance a un site qui :
* crée des url contenant des caractères accentué (=> erreur http)
* propose des solutions Ajax alors qu'à l'affichage de cette page j'ai, sous IE et Firefox le message d'erreur "Ajax est indéfini"

Oublie le

A+
E.Bzz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/01/2008, 16h57   #7
Membre Expert
 
Avatar de riete
 
Homme Thierry
NFC & DevWeb
Inscription : avril 2006
Messages : 1 175
Détails du profil
Informations personnelles :
Nom : Homme Thierry
Âge : 51
Localisation : France

Informations professionnelles :
Activité : NFC & DevWeb
Secteur : Bâtiment

Informations forums :
Inscription : avril 2006
Messages : 1 175
Points : 1 366
Points : 1 366
Sur le point de vu
Citation:
Un conseil : si ta solution fonctionne, garde la
je suis assez d'accord.

J'ai ajouter le code que tu m'as proposé, cela fonctionne, mais je me sents idiot car je ne sais pas pourquoi il fonctionne. Je ne comprends pas le sens de la condition?
Code :
onblur="if (my_Ajax(this.form)) this.form.submit();"
Quand le focus est perdu par le champ, il se passe quoi dans ce cas? Je crois comprendre que my_Ajax(this.form) est exécuté et après c'est le flou

Pour le coup de l'article en question, j'ai trouver le problème de leur page, il devait s'agir d'une question d'encodage au moment de l'enregistrement du code (ou qq chose comme cela). Il y a une 'quote' US à la place d'un guillemet simple.
Mais je t'assure que leur système fonctionne plutot bien, il y a des idées à exploiter.
riete est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/01/2008, 17h19   #8
Responsable Modération
 
Homme
Inscription : janvier 2007
Messages : 9 315
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Secteur : Finance

Informations forums :
Inscription : janvier 2007
Messages : 9 315
Points : 15 609
Points : 15 609
Citation:
Envoyé par riete Voir le message
J'ai ajouter le code que tu m'as proposé, cela fonctionne, mais je me sents idiot car je ne sais pas pourquoi il fonctionne. Je ne comprends pas le sens de la condition?
Code :
onblur="if (my_Ajax(this.form)) this.form.submit();"
Quand le focus est perdu par le champ, il se passe quoi dans ce cas? Je crois comprendre que my_Ajax(this.form) est exécuté et après c'est le flou
Ta fonction my_Ajax(this.form) fais un return false quand tu ne souhaites pas soumettre le formulaire
=> traduction :
quand le champ perd le focus => execution de my_Ajax(this.form)
s'il renvoie false => stop (en fait : rien)
sinon submit le form
Pour que ça soit plus clair, imagine que my_Ajax(this.form) retourne "true" dans les cas où il s ne renvoie pas "false" ...
Tu peux d'ailleurs le modifier dans ce sens pour une meilleure lisibilité
(EDIT : si ce n'est pas déjà le cas)

A+
E.Bzz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/01/2008, 17h56   #9
Membre Expert
 
Avatar de riete
 
Homme Thierry
NFC & DevWeb
Inscription : avril 2006
Messages : 1 175
Détails du profil
Informations personnelles :
Nom : Homme Thierry
Âge : 51
Localisation : France

Informations professionnelles :
Activité : NFC & DevWeb
Secteur : Bâtiment

Informations forums :
Inscription : avril 2006
Messages : 1 175
Points : 1 366
Points : 1 366
Si j'ai bien compris ta colle, il faudrait que je mette juste sur le ONBLUR du champ input?
Code :
<input classname=input type=text size=60 name=t1 ONBLUR="my_Ajax(this.form);">
Car qu'il renvoie TRUE ou FALSE, la seule chose qui m'interesse, c'est de transmettre le contenu de mes champ par:
Code :
1
2
3
open("POST", "Mapage.php", true);
var data = 'les varaible de mon formulaire';
send(data);
En tout cas, sans optimisation, ca marche déjà plutôt bien. Mes data sont transmises quand j'appuie sur Entrée et aussi quand je change de focus d'un champ à l'autre. C'est le top merci encore
riete est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/01/2008, 18h03   #10
Responsable Modération
 
Homme
Inscription : janvier 2007
Messages : 9 315
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Secteur : Finance

Informations forums :
Inscription : janvier 2007
Messages : 9 315
Points : 15 609
Points : 15 609
Je n'avais pas bien compris ta demande (ou je me suis embrouillé) : je pensais que tu voulais un submit automatique si pas de "return false" ...
Bravo pour l'adaptation

A+
E.Bzz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/01/2008, 18h12   #11
Membre Expert
 
Avatar de riete
 
Homme Thierry
NFC & DevWeb
Inscription : avril 2006
Messages : 1 175
Détails du profil
Informations personnelles :
Nom : Homme Thierry
Âge : 51
Localisation : France

Informations professionnelles :
Activité : NFC & DevWeb
Secteur : Bâtiment

Informations forums :
Inscription : avril 2006
Messages : 1 175
Points : 1 366
Points : 1 366
On s'est compris quand même, même si je suis loin d'être un Wizard en en Javascript Merci.
Je termine une journée avec une bonne maquette de code que je vais pouvoir transcrire dans mon projet demain.
Merci pour ton aide.

A+ Riete
riete est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 17h29.


 
 
 
 
Partenaires

Hébergement Web