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 :

submit() qui se répète à l'infini


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 70
    Par défaut submit() qui se répète à l'infini
    Bonjour, j'ai fais dans un while php une petite action JS qui me permet de compter le nombre de caractères. Et une fois qu'il y a 13 caractères, mon form est envoyé automatiquement sur une page php qui va traiter tout ça. Cependant, j'ai un énorme probleme puisque tout fonctionne bien en local, par contre lorsque je suis en ligne sur IE j'ai mon submit() qui est envoyé à l'infini dès lors ou les caractère sont >= à 13. Impossible de l'arrêter sans fermer la fenetre. je suis complètement débutant en JS, pouvez-vous m'aider svp ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    <form method="post" name="<?php echo 'Myform' . $numero_commande; ?>" action="admin_livraison_traitement.php">							<input type="text" name="numero_suivi" size="18" /><input type ="submit" value="Envoyer" /><br />
     
     
     
    							<script type='text/javascript'>
    								onch<?php echo $numero_commande; ?>("");
    								function onch<?php echo $numero_commande; ?>(txt)
    								{
    									txt.length.toString();
    									timer=setTimeout("onch<?php echo $numero_commande; ?>(document.<?php echo 'Myform' . $numero_commande; ?>.numero_suivi.value)", 100);
     
    									if(txt.length.toString()>=13) { document.<?php echo 'Myform' . $numero_commande; ?>.submit(); }
    								}
    							</script>
    </form>

  2. #2
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    Ce serait sympa de se conformer à Important : Les règles incontournables d'utilisation de ce forum et de poster le code généré et non le PHP !

    Sinon

    A quoi sert le toString() ?
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 70
    Par défaut
    Bonjour, désolé mon code généré est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
     
    <form method="post" name="Myform1210070033_1" action="admin_livraison_traitement.php">
     
     
    <input type="text" name="numero_suivi" size="18" /><input type ="submit" value="Envoyer" /><br />
     
     
     
     
    							<script type='text/javascript'>
    								onch1210070033_1("");
    								function onch1210070033_1(txt)
    								{
    									txt.length.toString();
    									timer=setTimeout("onch1210070033_1(document.Myform1210070033_1.numero_suivi.value)", 100);
     
    									if(txt.length.toString()>=13) { document.Myform1210070033_1.submit(); }
    								}
    							</script>
     
     
     
     
     
    					</form>

    Quant au toString() j'avous que je ne suis pas certain de savoir s'il est vraiment utile ou non étant donné que je suis débutant et que ce bout de code a été bricolé à partir d'un bout de code trouvé sur le net

  4. #4
    Membre Expert
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    1 132
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 132
    Par défaut
    Bonjour,

    J'ai peur d'avoir compris ce que tu as voulu faire...

    Il existe en Javascript un évènement appelé "onchange"; il permet d'exécuter du code lorsque le contenu d'un "input text" (par exemple) est modifié par l'utilisateur.
    Et ce sans avoir à aller le vérifier "à la main" toutes les 100ms

    devyan.

    P.S. : le toString() est étrange mais 2 lignes plus haut le code ne sert absolument à rien ;D ( txt.length.toString(); )

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 70
    Par défaut
    Effectivement le problème vient du setTimeout() qui envoi en boucle mon form mais pourquoi puisqu'au rechargement de ma page le champ est redevenu vide ?
    Aussi, je ne peu pas utiliser le onchange car après quelques essais je me suis rendu compte que le script n'agissait que lorsque le champ texte perdait le focus. Puis avec onkeypress les copier-coller n'active pas le script non plus, hors j'ai besoin de copier-coller. Sinon je me suis dit qu'avec la fonction clearTimeout(timer); je devais pouvoir arreter la boucle mais je ne sais pas ou le placer pour que ca fonctionne jai essayé déja plein de soluces. Pouvez-vous m'aider svp

  6. #6
    Membre Expert
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    1 132
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 132
    Par défaut
    Tu peux aussi utiliser les 2 (onkeypress pour la frappe et onchange pour le copier/coller)

    Remarque: onchange est déclenché de 2 façons :
    * lors de la validation de la saisie (appui sur entrée dans un input text, sélection d'un élément dans un select)
    * lors de la perte du focus (il y a en fait une validation de la saisie)


    devyan.

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

Discussions similaires

  1. texte qui ce répète et Height non respecté sur IE6
    Par Strix dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 20/04/2007, 16h16
  2. Data qui se répète
    Par sabrecoach dans le forum SAP Crystal Reports
    Réponses: 3
    Dernier message: 23/02/2007, 10h06
  3. Select qui fais une boucle infinie
    Par MaitrePylos dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 28/03/2006, 17h29
  4. myform.submit() qui ne passe pas sous IE
    Par narnou dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 20/03/2006, 14h42
  5. Réponses: 5
    Dernier message: 26/09/2005, 15h36

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