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 :

form qui ne renvoie rien


Sujet :

JavaScript

  1. #1
    Membre chevronné
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    316
    Détails du profil
    Informations personnelles :
    Âge : 70
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 316
    Par défaut form qui ne renvoie rien
    bonjour,
    je débute en js et je suis nul de chez nul.
    dans un form, j'ai fait çà:
    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
    26
    27
    28
    29
    30
     
    <form action="" method="get" name="bord" onsubmit="window.print()" enctype="" target="">
    <td width="10%"><input type="checkbox" name="numero" value="108"><br />n&deg; 108</td>
    <td width="10%"><input type="checkbox" name="numero" value="107"><br />n&deg; 107</td>
     
    <td width="10%"><input type="checkbox" name="numero" value="106"><br />n&deg; 106</td>
    <td width="10%"><input type="checkbox" name="numero" value="105"><br />n&deg; 105</td>
    <td width="10%"><input type="checkbox" name="numero" value="104"><br />n&deg; 104</td>
    <td width="10%"><input type="checkbox" name="numero" value="103"><br />n&deg; 103</td>
    <td width="10%"><input type="checkbox" name="numero" value="102"><br />n&deg; 102</td>
     
    <td width="10%"><input type="checkbox" name="numero" value="101"><br />n&deg; 101</td>
    <td width="10%"><input type="checkbox" name="numero" value="100"><br />n&deg; 100</td>
    <td width="10%"><input type="checkbox" name="numero" value="99"><br />n&deg; 99</td>
     
    //********************** et plus loin
     
    <li>Rédigez votre chèque d'un montant de : 
    	<SCRIPT language="JavaScript">
    		function calc(z){
    		var tb=0;
    		var i;
                        for(i=0;<z;i++){
                            if(document.getElementsByName("numero")[i].checked==true){
                            tb++;
                         }
                     }
    document.write(tb);
    	</script>
     € à l'ordre de .......
    après je l'appelle par:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    <input type="button" value="Convertir" OnClick="calc(<?php print($Nb);?>)"/>
    et cela ne me rend aucun résultat.

    pouvez-vous me dire pourquoi cela ne fonctionne pas
    d'avance merci

  2. #2
    Expert éminent

    Avatar de vermine
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    6 582
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2008
    Messages : 6 582
    Par défaut
    Bonjour,

    Avant de regarder plus loin, il manque un élément dans le for:


  3. #3
    Membre chevronné
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    316
    Détails du profil
    Informations personnelles :
    Âge : 70
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 316
    Par défaut
    autant pour moi! c'est une erreur de retranscription; il faut lire

  4. #4
    Expert éminent

    Avatar de vermine
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    6 582
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2008
    Messages : 6 582
    Par défaut
    A quoi sert à la variable tb ? Elle aura la même valeur que i, me semble-t-il:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    document.write(i);
    //voire peut-être avec une incrémentation, à vérifier
    document.write(++i);
    Sinon, ça bloque peut-être au onclick lorsque vous appelez une variable PhP comme paramètre de la fonction. Paramètre qui d'ailleurs est peut-être interprété comme une chaine de caractères dans votre for et non comme un nombre. :o

  5. #5
    Membre chevronné
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    316
    Détails du profil
    Informations personnelles :
    Âge : 70
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 316
    Par défaut
    le parametre récupéré de Php est un nombre ce qui donne z= 44
    i est l'indice de comptage pour le for il va de 0 à 43
    tb est le nombre de valeurs true

    si je fais tout en Php, tout fonctionne et là, je merde complètement.

  6. #6
    Expert éminent

    Avatar de vermine
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    6 582
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2008
    Messages : 6 582
    Par défaut
    Excusez-moi, j'ai sauté une ligne dans ma lecture du code.

    Par contre, je me concentrerai sur la valeur de "z". Vous avez mis un alert en début de fonction pour voir la valeur ? Et que donne un alert de:


  7. #7
    Membre chevronné
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    316
    Détails du profil
    Informations personnelles :
    Âge : 70
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 316
    Par défaut
    si je mets
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    function calc(z){
    alert(z);
    ....//....}
    je n'ai pas d'alerte qui s'affiche.
    je comprends rien.

  8. #8
    Expert éminent

    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
    Par défaut
    Bonjour,
    tu as oublié les quottes autour du paramètre de calc() généré par PHP
    Du coup il est considéré comme une variable. Et comme cette variable n'existe pas ....

    A+

  9. #9
    Membre chevronné
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    316
    Détails du profil
    Informations personnelles :
    Âge : 70
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 316
    Par défaut
    excusez-moi; il manquait une accolade pour fermer la fonction.
    alert() affiche bien 44
    mais tb ne renvoie rien.
    ma condition
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    if(document.getElementsByName("numero")[i].checked==true){
    tb++;
    }
    ne fonctionne pas!!

  10. #10
    Membre chevronné
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    316
    Détails du profil
    Informations personnelles :
    Âge : 70
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 316
    Par défaut
    si je fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    for(i=0;i<z;i++){
    															if(document.getElementsByName("numero")[i].checked==1){
    															alert(i);
    															tb = tb+1;
    															}
    	}
    alors alert(i) me renvoie bien les indices des cases cochées mais tb ne s'incrémente pas; pourtant il est bien déclaré plus haut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    function calc(z){
    //alert('attention'+z);
    var tb = 0;
    var i;
    .............//..............}
    comment faire pour qu'il s'incrémente?
    merci

  11. #11
    Expert éminent

    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
    Par défaut
    Tu as essayé de faire un alert() au lieu du document.write() ?
    De toutes façons, il faudra modifier ce dernier ...

    A+

  12. #12
    Membre chevronné
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    316
    Détails du profil
    Informations personnelles :
    Âge : 70
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 316
    Par défaut
    si je fais
    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
     
    function calc(z){
    //alert('attention'+z);
    var tb = 0;
    var i;
    for(i=0;i<z;i++){
    if(document.getElementsByName("numero")[i].checked==1){
    //alert(i);
    tb = tb+1;
    //alert(tb);
    }
    }
    return tb;
    }
    document.write(tb);
    mes alertes me retournent bien les valeurs, aussi bien pour le i que pour le tb mais je ne peux pas renvoyer mon tb pour le mettre dans document.write(tb)
    comment faut-il faire ?

  13. #13
    Expert éminent

    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
    Par défaut
    Déjà s'agissant d'une variable locale, tu ne peux l'utiliser que dans la fonction.
    Mais encore une fois, ce n'est pas un document.write() qu'il faut utiliser : teste d'abord avec un alert() ...

    A+

  14. #14
    Membre chevronné
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    316
    Détails du profil
    Informations personnelles :
    Âge : 70
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 316
    Par défaut
    ok, j'ai sorti la déclaration de ma variable 'tb' de la fonction; donc normalement elle est globale
    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
     
    <head>
    <SCRIPT language="Javascript">
    var tb;
    function calc(z){
    //alert('attention'+z);
    tb = 0;
    var i;
    for(i=0;i<z;i++){
    if(document.getElementsByName("numero")[i].checked==1){
    //alert(i);
    tb = tb+1;
    //alert(tb);
    }
    }
    return tb;
    }
    </script>
    </head>
    et dans le <body>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <script>
    document.write(tb);
    </script>
    le résultat me donne: undefined

    ou est-ce que j'ai m....dé?

  15. #15
    Expert éminent

    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
    Par défaut
    Citation Envoyé par notar Voir le message
    le résultat me donne: undefined

    ou est-ce que j'ai m....dé?
    Citation Envoyé par E.Bzz Voir le message
    Mais encore une fois, ce n'est pas un document.write() qu'il faut utiliser : teste d'abord avec un alert() ...


    A+

  16. #16
    Expert éminent

    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
    Par défaut
    Pour être un peu plus complet :
    En dehors de la fonction, ton document.write() va s'exécuter au chargement de la page. A ce moment-là, tb n'est pas encore défini. C'est le message que tu obtiens.
    Il suffirait donc de la mettre dans la fonction ?
    Non plus, car dans ce cas là, le contenu de ton document (= de ta page) sera remplacé par le write(). Pas glop non plus.

    Il faut que tu prévoit un <span> pour récupérer la valeur de tb.
    Ainsi en fin de ta fonction tu pourras faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.getElementById('id_du_span').innerHTML = tb;


    A+

  17. #17
    Membre chevronné
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    316
    Détails du profil
    Informations personnelles :
    Âge : 70
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 316
    Par défaut
    si je fais
    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
     
    function calc(z){
    //alert('attention'+z);
    var tb = 0;
    var i;
    for(i=0;i<z;i++){
    if(document.getElementsByName("numero")[i].checked==1){
    //alert(i);
    tb = tb+1;
    //alert(tb);
    }
    }
    return tb;
    }
    document.write(tb);
    mes alertes me retournent bien les valeurs, aussi bien pour le i que pour le tb mais je ne peux pas renvoyer mon tb pour le mettre dans document.write(tb)
    comment faut-il faire ?
    alert() à la place de document.write() me donne aussi undefined

    alors çà je l'ai règlé en mettant dans
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <script>if(tb<>"")alert(tb);</script>
    mais çà ne me dit toujours pas comment je peux renvoyer ma variable dans le script d'affichage.
    merci pour votre aide

  18. #18
    Membre chevronné
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    316
    Détails du profil
    Informations personnelles :
    Âge : 70
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 316
    Par défaut
    merci de m'avoir donné la réponse.
    mais comme je disais
    bonjour,
    je débute en js et je suis nul de chez nul.
    dans un form, j'ai fait çà:

  19. #19
    Expert éminent

    Avatar de vermine
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    6 582
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2008
    Messages : 6 582
    Par défaut
    On voulait s'avoir si tb avait la bonne valeur en sortant de la fonction. Apparement, oui. Donc je remettrai la variable en local comme le dit E.Bzz et irai mettre cette valeur dans un élément html de la page (exemple du span précité) Donc, au lieu de faire un:

    faites plutôt un:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    document.getElementById('id_du_span').innerHTML = tb;
    avec (mais ce n'est un exemple et il utilise innerHTML) un span:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <span id='id_du_span'></span> <span> € à l'ordre de .......</span>

  20. #20
    Membre chevronné
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    316
    Détails du profil
    Informations personnelles :
    Âge : 70
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 316
    Par défaut
    ben oui, du coup voila le code complet de la fonction
    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
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
     
    <SCRIPT language="Javascript">
    var tb;
    function calc(z,price){
    		//alert('attention'+z);
    		tb = 0;
    		var abon1=0;
    		var abon2=0;
    		var don=0;
    		var TotalAboDon = 0;
    		var TotalBulletin = 0;
    		var i;
    	for(i=0;i<z;i++){
    		if(document.getElementsByName("numero")[i].checked==1){
    		//alert(i);
    		tb = tb+1;
    		//alert(tb);
    		}
    	}
    	if(document.getElementsByName("abonn")[0].checked==1){
    	abon1 = document.getElementsByName("abonn")[0].value;
    	//alert(abon1);
    	}
    	if(document.getElementsByName("abonn")[1].checked==1){
    	abon2 = document.getElementsByName("abonn")[1].value;
    	//alert(abon2);
    	}
     
    	don = document.getElementById('autredon').value;
    	var reg=new RegExp("(,)", "g");
    	don= don.replace(reg,".");
    	//alert('don'+don);
     
    document.getElementById('Recap').innerHTML = '<h3>RECAPITULATIF</H3><table width="50%"><tr><td width="70%" align="center">Cotisations et dons</td><td align="right">'+(Number(abon1)+Number(abon2)+Number(don))+' €</td></tr><tr><td>Commande de '+tb+' bulletins à '+price+' €</td><td align="right">'+Number(tb*price)+' €</td></tr><tr><td align="right"><b>Total</b></td><td align="right"><b>'+(Number(tb*price)+Number(abon1)+Number(abon2)+Number(don))+' €</b></td></tr></table>';
     
    	if(document.getElementById('txtprenom').value==""){
    	alert('prenom n\'est pas renseigné!');
    	document.getElementById('prenom').innerHTML ='<input type="text" style="background-color: #FFE4C4;" name="prenom" id="txtprenom" size=14 maxlenght=30>';
    	exit();
    	}
    	if(document.getElementById('txtnom').value==""){
    	alert('nom n\'est pas renseigné!');
    	document.getElementById('nom').innerHTML ='<input type="text" style="background-color: #FFE4C4;" name="nom" id="txtnom" size=20 maxlenght=40>';
    	exit();
    	}
    	if(document.getElementById('txtvoie').value==""){
    	alert('voie n\'est pas renseignée!');
    	document.getElementById('voie').innerHTML ='<input type="text" style="background-color: #FFE4C4;" name="voie" id="txtvoie" size=48 maxlength=60>';
    	exit();
    	}
    	if(document.getElementById('txtcp').value==""){
    	alert('code postal n\'est pas renseigné!');
    	document.getElementById('cp').innerHTML ='<input type="text" style="background-color: #FFE4C4;" name="cp" id="txtcp" size=5 maxlength=5>';
    	exit();
    	}
    	if(document.getElementById('txtville').value==""){
    	alert('ville n\'est pas renseignée!');
    	document.getElementById('ville').innerHTML ='<input type="text" style="background-color: #FFE4C4;" name="ville" id="txtville" size=48 maxlength=60>';
    	exit();
    	}
    	if((document.getElementById('txttel').value=="") && (document.getElementById('txtadremail').value=="")){
    	alert('Donnez nous au moins un numéro de téléphone ou une adresse mail pour que nous puissions vous contacter!');
    	exit();
    	}
     
    document.getElementById('Result').innerHTML = (Number(tb*price)+Number(abon1)+Number(abon2)+Number(don));
    setTimeout("window.print()",2000);
    //window.print();
    }
    </script>
    avec un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <div id="Recap" align="center"></div>
    et un appel par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <input type="button" class="imprim" value="Imprimer" OnClick="calc(<?php print($Nb);?>,<?php print($ancien_Numero); ?>)"/>
    si j'avais su d'entré de jeu qu'il fallait employer un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    document.getElementById('Id_du_span').innerHTML
    aulieu de me faire tester des:
    Envoyé par E.Bzz Voir le message
    Mais encore une fois, ce n'est pas un document.write() qu'il faut utiliser : teste d'abord avec un alert() ...
    j'aurais compris tout aussi bien et j'aurais gagné pas mal de temps.

    dans tous les cas, je vous remercie pour l'aide précieuse apportée.

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

Discussions similaires

  1. [Sécurité] Session qui ne renvoie rien
    Par cando666 dans le forum Langage
    Réponses: 2
    Dernier message: 01/02/2008, 14h11
  2. Fonction qui ne renvoie rien
    Par grenoult dans le forum VBA Access
    Réponses: 1
    Dernier message: 08/06/2007, 11h15
  3. Requete sql qui ne renvoie rien :-(
    Par patchouli dans le forum Langage SQL
    Réponses: 4
    Dernier message: 06/02/2007, 09h41
  4. Fonction qui ne renvoie rien
    Par philippef dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 14/11/2006, 18h12
  5. [PostgreSql] requête simple qui ne renvoie rien ?
    Par tuxout dans le forum Langage SQL
    Réponses: 6
    Dernier message: 03/08/2006, 14h06

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