IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

[AJAX] Soumettre formulaire sur OnBlur


Sujet :

JavaScript

  1. #1
    Membre expérimenté Avatar de riete
    Homme Profil pro
    DevWeb - Oléiculteur
    Inscrit en
    Avril 2006
    Messages
    1 193
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : DevWeb - Oléiculteur
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 193
    Points : 1 414
    Points
    1 414
    Par défaut [AJAX] 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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    <input classname=input type=text size=60 name=t1 ONBLUR="submit();">
    ----
    L'avenir appartient à ceux dont les salariés se lèvent tôt.

  2. #2
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    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 : 13 474
    Points : 36 571
    Points
    36 571
    Par défaut
    Bonjour,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    onblur="this.form.submit();"
    A+
    Pour tout savoir sur l'utilisation du forum

    En postant votre message, n'oubliez pas les Règles du Club.

  3. #3
    Membre expérimenté Avatar de riete
    Homme Profil pro
    DevWeb - Oléiculteur
    Inscrit en
    Avril 2006
    Messages
    1 193
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : DevWeb - Oléiculteur
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 193
    Points : 1 414
    Points
    1 414
    Par défaut
    J'ai essayé, le code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    ----
    L'avenir appartient à ceux dont les salariés se lèvent tôt.

  4. #4
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    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 : 13 474
    Points : 36 571
    Points
    36 571
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    onblur="if (my_Ajax(this.form)) this.form.submit();"
    A+
    Pour tout savoir sur l'utilisation du forum

    En postant votre message, n'oubliez pas les Règles du Club.

  5. #5
    Membre expérimenté Avatar de riete
    Homme Profil pro
    DevWeb - Oléiculteur
    Inscrit en
    Avril 2006
    Messages
    1 193
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : DevWeb - Oléiculteur
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 193
    Points : 1 414
    Points
    1 414
    Par défaut
    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
    ----
    L'avenir appartient à ceux dont les salariés se lèvent tôt.

  6. #6
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    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 : 13 474
    Points : 36 571
    Points
    36 571
    Par défaut
    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+
    Pour tout savoir sur l'utilisation du forum

    En postant votre message, n'oubliez pas les Règles du Club.

  7. #7
    Membre expérimenté Avatar de riete
    Homme Profil pro
    DevWeb - Oléiculteur
    Inscrit en
    Avril 2006
    Messages
    1 193
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : DevWeb - Oléiculteur
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 193
    Points : 1 414
    Points
    1 414
    Par défaut
    Sur le point de vu
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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.
    ----
    L'avenir appartient à ceux dont les salariés se lèvent tôt.

  8. #8
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    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 : 13 474
    Points : 36 571
    Points
    36 571
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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+
    Pour tout savoir sur l'utilisation du forum

    En postant votre message, n'oubliez pas les Règles du Club.

  9. #9
    Membre expérimenté Avatar de riete
    Homme Profil pro
    DevWeb - Oléiculteur
    Inscrit en
    Avril 2006
    Messages
    1 193
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : DevWeb - Oléiculteur
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 193
    Points : 1 414
    Points
    1 414
    Par défaut
    Si j'ai bien compris ta colle, il faudrait que je mette juste sur le ONBLUR du champ input?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    ----
    L'avenir appartient à ceux dont les salariés se lèvent tôt.

  10. #10
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    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 : 13 474
    Points : 36 571
    Points
    36 571
    Par défaut
    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+
    Pour tout savoir sur l'utilisation du forum

    En postant votre message, n'oubliez pas les Règles du Club.

  11. #11
    Membre expérimenté Avatar de riete
    Homme Profil pro
    DevWeb - Oléiculteur
    Inscrit en
    Avril 2006
    Messages
    1 193
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : DevWeb - Oléiculteur
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 193
    Points : 1 414
    Points
    1 414
    Par défaut
    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
    ----
    L'avenir appartient à ceux dont les salariés se lèvent tôt.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 8
    Dernier message: 26/10/2012, 19h21
  2. Réponses: 9
    Dernier message: 03/02/2009, 23h46
  3. Réponses: 7
    Dernier message: 20/01/2009, 14h54
  4. [AJAX] [PHP-JS] Evénement ONBLUR sur champ texte
    Par Sytchev3 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 07/09/2007, 15h31
  5. [AJAX] Ajax fonctionne sur onblur mais pas sur onkeypress
    Par julien.63 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 19/01/2007, 15h14

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo