cs_derf4002
Messages postés23Date d'inscriptionjeudi 1 mai 2003StatutMembreDernière intervention13 janvier 2009
-
4 avril 2007 à 11:09
cs_derf4002
Messages postés23Date d'inscriptionjeudi 1 mai 2003StatutMembreDernière intervention13 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]' : '';
// 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 :(
cs_derf4002
Messages postés23Date d'inscriptionjeudi 1 mai 2003StatutMembreDernière intervention13 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();
}
cs_bultez
Messages postés13615Date d'inscriptionjeudi 13 février 2003StatutMembreDernière intervention15 octobre 201330 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 />
lesdis
Messages postés403Date d'inscriptionmercredi 19 avril 2006StatutMembreDerniè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.
[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.
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_bultez
Messages postés13615Date d'inscriptionjeudi 13 février 2003StatutMembreDernière intervention15 octobre 201330 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 />
cs_derf4002
Messages postés23Date d'inscriptionjeudi 1 mai 2003StatutMembreDernière intervention13 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>
cs_derf4002
Messages postés23Date d'inscriptionjeudi 1 mai 2003StatutMembreDernière intervention13 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à :-)
cs_derf4002
Messages postés23Date d'inscriptionjeudi 1 mai 2003StatutMembreDernière intervention13 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);
}
}
.....
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