Début en javascript

Résolu
cs_derf4002 Messages postés 23 Date d'inscription jeudi 1 mai 2003 Statut Membre Dernière intervention 13 janvier 2009 - 4 avril 2007 à 11:09
cs_derf4002 Messages postés 23 Date d'inscription jeudi 1 mai 2003 Statut Membre Dernière intervention 13 janvier 2009 - 5 avril 2007 à 15:28
Bonjour, je débute en javascript est je galère sur un ptit truc... Voilà, en gros j'ai un formulaire php qui génére une zone de champ en fonction d'un nombre saisie auparavant. Bon jusque là, rien de bien compliqué. Maintenant pour chacune de ces zones, je dois pouvoir rajouter 3 champs par simple clic sur un bouton. Donc avec mon niveau de débutant je suis aller pomper un code sur internet et essayé de l'adapter à mes besoins. Voilà ce que ca donne :

<hr size="2" width="100%" /><head>
    <script>
    function create_champ(n, i) {

    var n2 = n + 1;

    document.getElementById(i+n).innerHTML = "<label> N° bouteille : </label><label> Type bouteille : </label><select name='typeBouteille"+i+n+"' value='2' /><option value='0.4m3'> 0.4m3</option><option value='1m3'> 1m3</option><option value='3m3'> 3m3</option></select>";
    document.getElementById(i+"_"+n).innerHTML += (n < 10) ? '
[javascript:create_champ('+n2+', '+i+') Ajouter une bouteille du même lot]' : '';

    }
    </script>
</head>
<?php

if(isset($_POST['lot'])){

?>

    Veuillez entrer les informations suivantes :

<hr>
<form method="post" action="<?php $PHP_SELF ?>" class='formul'>
    <label> N° B.L. : </label>
    ' size="12" readonly />
   
    <label> Récéption le : </label>
    ' size="1" readonly />
    ' size="1" readonly />
    ' size="2" readonly />
    ' >
    <?php
    for($i=0; $i<$_POST['nbLot']; $i++){
        echo "<hr/>
        Lot ".($i+1)." :
        <label> Fabricant : </label>
       
        <label> N° de Lot : </label>
       
        <label> Expire le : </label>
        <select name='jourExpiration$i' value='2' />
            <option value='".date("d")."'>".date("d")."</option>";
        for($j=1; $j<=31; $j++) echo "<option value='$j'> $j </option>";
        echo "</select>
        <select name='moisExpiration$i' value='2' />
            <option value='".date("m")."'>".date("m")."</option>";
        for($j=1; $j<=12; $j++) echo "<option value='$j'> $j </option>";
        echo "</select>
        <select name='anneeExpiration$i' value='2' />";
        for($j=date("Y"); $j>=2002; $j--) echo "<option value='$j'> $j </option>";
        echo "</select>
     
 // Début de la zone à dupliquer
         <label> N° bouteille : </label>
       
        <label> Type bouteille : </label>
        <select name='typeBouteille$i1' value='2' />
            <option value='0.4m3'> 0.4m3</option>
            <option value='1m3'> 1m3</option>
            <option value='3m3'> 3m3</option>
        </select>
        Ajouter une bouteille du même lot
    //fin de la zone à dupliquer
        ";
    }
    ?>
<hr size="2" width="100%" />
Je ne sais pas si en javascript le fait de faire un int+int+string m'additionne mes deux int où me les transformes en chaine... dans le doute j'ai fais qques bidouilles mais marche toujours pas :(

15 réponses

cs_derf4002 Messages postés 23 Date d'inscription jeudi 1 mai 2003 Statut Membre Dernière intervention 13 janvier 2009
5 avril 2007 à 15:28
Rectification (ca m'apprendra à poster trop vite -_-)
Les fonctions qui passent pas son :
<hr size="2" width="100%" />function testercodepostal (texte) {
    // Aide à la saisie : code postal
        var expression = /^[0-9]{0,5}$/g; // caractères autorisés
        if (!expression.test(texte.value)){
            //alert ("Ecrivez le code postal avec 5 chiffres ...");
            texte.value=texte.value.substring(0,texte.value.length-1);
        }
    }

   
    function testernom(texte){
    // Aide à la saisie : Nom ou prénom
    // Interdire des caratères non autorisés
        var a_str=texte.value;
        var expression = /^[àáâãäåòóôõöøèéêëçìíîïùúûüÿñoæa-z '-]+$/gi; // caractères autorisés
        if (!expression.test(texte.value)){
            // alert ("Ecrivez le nom sous la forme : Monté-Cristo ...");
            texte.value=texte.value.substring(0,texte.value.length-1);
            return false;
        }
        // 1er caractère doit être une majuscule
        expression = /^[àáâãäåòóôõöøèéêëçìíîïùúûüÿñoæa-z]{1}+$/g;
        a_str=texte.value;
        if (expression.test(texte.value)){
            // alert ("Le 1er caractère doit être une majuscule ...");
            a=texte.value.substring(0,1);
            texte.value=a_str.toUpperCase();
            return false;
        }
        // Interdire 2 caractères identiques de suite : ' -
        expression = /[-]{2}|[']{2}|[ ]{2}/g;
        a_str=texte.value;
        if (expression.test(texte.value)){
            // alert ("Evitez 2 blancs ou - ou '");
            texte.value=texte.value.substring(0,texte.value.length-1);
            return false;
        }
        // Interdire 2 majuscules de suite
        expression = /[A-Z]{1}[A-Z]{1}/g;
        a_str=texte.value;
        if (expression.test(texte.value)){
            // alert ("N'écrivez pas le nom en "tout majuscule"");
            a_str=texte.value.substring(texte.value.length-1,texte.value.length);
            texte.value=texte.value.substring(0,texte.value.length-1)+a_str.toLowerCase();
        }

    }
3
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
4 avril 2007 à 12:36
Bonjour,

comme tu nous fourni le php, on ne voit pas grand chose...
    qu'y a-t-il dans les $variable ?
    et ne pourrais-tu pas isoler ton problème ? faire plus court ?

    parce que moi, ça me rebute. ( je ne dois pas être le seul )


    puis   nous dire où sa plante, où est l'erreur...



>>Je ne sais pas si en javascript le fait de faire un int+int+string m'additionne
>>mes deux int où me les transformes en chaine...
    il suffit de regarder le résultat. alert par exemple

et aussi :

Avec |
|
et mieux :
télécharger
|

----

FireFox,
regarder la "console d'erreurs",
mon Site]     [M'écrire]<hr />
0
lesdis Messages postés 403 Date d'inscription mercredi 19 avril 2006 Statut Membre Dernière intervention 7 août 2020
4 avril 2007 à 12:42
Bonjour,

Lors de l'opération int+int+string, javascript te convertit le tout en chaîne. Si tu veux additionner les 2 int, il faut aller voir du côté de la fonction parseInt(). De même, il existe la fonction String(), qui te permet de convertir un contenu en chaîne de caractère.

Bonne prog.
0
cs_derf4002 Messages postés 23 Date d'inscription jeudi 1 mai 2003 Statut Membre Dernière intervention 13 janvier 2009
4 avril 2007 à 13:41
En gros je veux dupliquer ca :
<hr size="2" width="100%" /> // Début de la zone à dupliquer
         <label> N° bouteille : </label>
       
        <label> Type bouteille : </label>
        <select name='typeBouteille$i1' value='2' />
            <option value='0.4m3'> 0.4m3</option>
            <option value='1m3'> 1m3</option>
            <option value='3m3'> 3m3</option>
        </select>
   
    [javascript:create_champ('+n2+', '+i+') Ajouter une bouteille
du même lot]' : '';

    }
    </script>
<hr size="2" width="100%" />la variable $i correspond à la zone à laquelle rajouter les champs. La variable n me sert à indicer les champs.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_derf4002 Messages postés 23 Date d'inscription jeudi 1 mai 2003 Statut Membre Dernière intervention 13 janvier 2009
4 avril 2007 à 13:47
Erreurs renvoyé par firebug à chaque fois que je clic sur le lien pour ajouter un champ :
document.getElementById(i + n) has no properties
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
4 avril 2007 à 13:57
on ne sait pas ce que contient $i. si ?
un id et/ou un name devrait d'ailleurs commencer par une lettre.
et à mon humble avis, i + n comme id n'existe pas dans le html.
mais comme on ne l'a pas... un petit extrait du html, pas de php
<hr />


Cordialement            Bul     [mon Site]     [M'écrire]



<hr />
0
cs_derf4002 Messages postés 23 Date d'inscription jeudi 1 mai 2003 Statut Membre Dernière intervention 13 janvier 2009
4 avril 2007 à 14:04
        Lot ".($i+1)." :
        <label> Fabricant : </label>
        
        <label> N° de Lot : </label>
        
        <label> Expire le : </label>
        <select name='jourExpiration$i' value='2' />
        .....
        <select name='moisExpiration$i' value='2' />
       .....
        <select name='anneeExpiration$i' value='2' />";
       ......
        <label> N° bouteille : </label>
        
        <label> Type bouteille : </label>
        <select name='typeBouteille$i1' value='2' />
            <option value='0.4m3'> 0.4m3</option>
            <option value='1m3'> 1m3</option>
            <option value='3m3'> 3m3</option>
        </select>
        Ajouter une bouteille du même lot
        ";
    }
0
cs_derf4002 Messages postés 23 Date d'inscription jeudi 1 mai 2003 Statut Membre Dernière intervention 13 janvier 2009
4 avril 2007 à 14:07
C'est bon, j'ai trouvé. Il faut bien une lettre dans l'id. Maintenant ca marche, thx.
0
cs_derf4002 Messages postés 23 Date d'inscription jeudi 1 mai 2003 Statut Membre Dernière intervention 13 janvier 2009
4 avril 2007 à 16:24
Bon en fait ca marche super bien... mais que sur Firefox... IE me dit qu'il y a une erreur et ne me cré pas les champs désiré -_-
Je redonne en parti mon code final qui marche sous firefox :
    <script>
    function create_champ(n, i){

    var n2 = n + 1;

    document.getElementById('c'+i+n).innerHTML = "<label> N° bouteille : </label><label> Type bouteille : </label><select name='typeBouteille"+i+n+"' value='2' /><option value='0.4m3'> 0.4m3</option><option value='1m3'> 1m3</option><option value='3m3'> 3m3</option></select>";
    document.getElementById('c'+i+n).innerHTML += (n < 10) ? '
[javascript:create_champ('+n2+', '+i+') Ajouter une bouteille du même lot]' : '';

    }
    </script>
<hr size="2" width="100%" />
        <label> N° de Lot : </label>
       
        <label> Expire le : </label>
        <select name='moisExpiration".($i+1)."' value='2' />
 ....
        <select name='anneeExpiration".($i+1)."' value='2' />";
....
        <label> N° bouteille : </label>
       
        <label> Type bouteille : </label>
        <select name='typeBouteille".($i+1)."1' value='2' />
            <option value='0.4m3'> 0.4m3</option>
            <option value='1m3'> 1m3</option>
            <option value='3m3'> 3m3</option>
        </select>
        Ajouter une bouteille du même lot
        ";
0
cs_derf4002 Messages postés 23 Date d'inscription jeudi 1 mai 2003 Statut Membre Dernière intervention 13 janvier 2009
5 avril 2007 à 10:53
up
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
5 avril 2007 à 11:37
down :
un petit extrait du html, pas de php ( je me cite )



<hr />



Cordialement            Bul     [mon Site]     [M'écrire]



<hr />
0
cs_derf4002 Messages postés 23 Date d'inscription jeudi 1 mai 2003 Statut Membre Dernière intervention 13 janvier 2009
5 avril 2007 à 13:44
Heu encore plus synthétique ? Plus synthétique que formulaire sans php mis à par pour les id, et le script... Enfin bon je vais essayer d'abréger encore :
<hr size="2" width="100%" /><script>
    function create_champ(n, i){

    var n2 = n + 1;

    document.getElementById('c'+i+n).innerHTML = "<label> N° bouteille : </label><label> Type bouteille : </label><select name='typeBouteille"+i+n+"' value='2' /><option value='0.4m3'> 0.4m3</option><option value='1m3'> 1m3</option><option value='3m3'> 3m3</option></select>";
    document.getElementById('c'+i+n).innerHTML += (n < 10) ? '
[javascript:create_champ('+n2+', '+i+') Ajouter une bouteille du même lot]' : '';

    }
    </script>
<hr size="2" width="100%" /><select name='typeBouteille".($i+1)."1' value='2' />
            <option value='0.4m3'> 0.4m3</option>
            <option value='1m3'> 1m3</option>
            <option value='3m3'> 3m3</option>
        </select>
        Ajouter une bouteille du même lot
<hr size="2" width="100%" />Voilà :-)
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
5 avril 2007 à 14:05
ben... tu fournis toujours le php ! pas la page générée !!!


...enfin.... supposons que $i vaille 0 ! faut que je fasse donc les modifs
dans le html !

    <script>
        function create_champ(n, i){
        var n2 = n + 1;
        document.getElementById('c'+i+n).innerHTML = "<label> N° bouteille : </label>"+
            ""+
            "<label> Type bouteille : </label>"+
            "<select name='typeBouteille"+i+n+"' value='2' />"+
            "<option value='0.4m3'> 0.4m3</option>"+
            "<option value='1m3'> 1m3"+
            "</option><option value='3m3'> 3m3</option>"+
            "</select>";
        document.getElementById('c'+i+n).innerHTML += (n < 10) ? '
[javascript:create_champ('+n2+', '+i+') Ajouter une bouteille du même lot]' : '';
        }
        </script>
    <select name='typeBouteille11' value='2' />
                <option value='0.4m3'> 0.4m3</option>
                <option value='1m3'> 1m3</option>
                <option value='3m3'> 3m3</option>
            </select>
            mon Site]     [M'écrire]</gras>



<hr />
0
cs_derf4002 Messages postés 23 Date d'inscription jeudi 1 mai 2003 Statut Membre Dernière intervention 13 janvier 2009
5 avril 2007 à 15:22
Ca marche
Moué bon... Tout ça pour une simple histoire de balise... enfin bref merci
Par contre tant que je suis là, j'ai un autre souci
Pareil, problème de compatibilité sauf que cette fois c'est avec Firefox... IE m'execute correctement le code.
Voilà un extrait (sans php) :
<hr size="2" width="100%" /><script language="JavaScript">

    function testertelephone(texte) {
    // Aide à la saisie : numéro de téléphone
        var expression = /[^0-9 +()]+/gi;
        if (expression.test(texte.value)){
            //alert ("Ecrivez le numéro sous la forme 02 99 xx xx xx \n ou +33 (0) 2 99 xx xx xx");
            texte.value=texte.value.substring(0,texte.value.length-1);
            return false;
        }
        var expression=/[0-9]{3}/gi;
        if (expression.test(texte.value)){
            texte.value=texte.value.substring(0,texte.value.length-1)+" "+texte.value.substring(texte.value.length-1,texte.value.length);
        }
        if (texte.value.length>14){
            texte.value=texte.value.substring(0,14);
        }
    }

    function testercodepostal (texte) {
    // Aide à la saisie : code postal
        var expression = /^[0-9]{0,5}$/g; // caractères autorisés
        if (!expression.test(texte.value)){
            //alert ("Ecrivez le code postal avec 5 chiffres ...");
            texte.value=texte.value.substring(0,texte.value.length-1);
        }
    }

    </script>
<hr size="2" width="100%" />....
    <label> Code Postal&nbsp;: </label>
   
    <label> Téléphone Principal&nbsp;: </label>
   
.....
Mici d'encore m'aider
Et si tu avais une explication pour ma curiosité, de pourquoi une balide bloque en passant par du javascript alors que ca passe bien en html, je suis preneur
0
cs_derf4002 Messages postés 23 Date d'inscription jeudi 1 mai 2003 Statut Membre Dernière intervention 13 janvier 2009
5 avril 2007 à 15:24
Pour aider (j'ai retenu la leçon ) voilà l'erreur renvoyé par firebug :
<li>
invalid quantifier +$
    expression = /^[àáâãäåòóôõöøèéêëçìíîïùúûüÿñoæa-z]{1}+$/g;\n

</li><li>

testercodepostal is not defined

    onkeyup(keyup charCode=0, keyCode=8)

</li>
0
Rejoignez-nous