Codes promotions, réductions et bons plans pour vos achats en ligne
Tous les forums > JavaScript > problème de compatibilité d'un code avec internet explorer 41 réponses - Page : 1 2 3 Suivant problème de compatibilité d'un code avec internet explorer patheo - 14/01/10 11:58 Profil Bonjour!
j'ai un problème de compatibilité avec un code javascript.
en effet, j'ai écrit ce code suivant pour un contrôle de saisie mais il ne donne pas le résultat attendu sur Internet Explorer (c'est à dire que même quand les champs sont correctement remplis, il return false) par contre avec firefox pas de problème:
function verifMois(champ)
{
if(champ.value=="")
{
surligne(champ, true);
return false;
}
else
{
surligne(champ, false);
return true;
}
}
apporté moi de l'aide svp pour resoudre le problème typo - 15/01/10 11:54 Profil
Bonjour patheo,
Est-ce uniquement cette fonction qui ne marche pas, ou tous les contrôles sur select ?
Comme vous avez modifié votre formulaire depuis le premier post, pourriez-vous remettre celui qui est à jour ?
patheo - 17/01/10 10:02 Profil Ce sont tout les contrôles sur select qui ne marchent pas sur Internet Explorer. quand je remplace "" par null, il ne marche sur aucun des deux navigateurs. j'ai crée en effet, un fichier.js (verification.js) qui contient le script de contrôle et que l'inclut dans le formulaire.
voici donc :
code de verification.js
// JavaScript Document
f<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title></title>
<script type="text/javascript">
function surligne(champ, erreur) {
if(erreur)
champ.style.backgroundColor = "#ff0000";
else
champ.style.backgroundColor = "#ffffff";
}
function verifMois(champ) {
if(champ.value=="") {
surligne(champ, true);
return false;
}else{
surligne(champ, false);
return true;
}
}
function verifSem(champ) {
if(champ.value=="") {
surligne(champ, true);
return false;
}else{
surligne(champ, false);
return true;
}
}
function verifAnnee(champ) {
if(champ.value=="") {
surligne(champ, true);
return false;
}else{
surligne(champ, false);
return true;
}
}
function verifNbre(champ) {
for(i=0;i<champ.value.length;++i) {
if(champ.value.charAt(i) < "0" || champ.value.charAt(i) > "9") {
surligne(champ, true);
return false;
}else surligne(champ, false);
}
return true;
}
function verifTotal(champ){
for(i=0;i<champ.value.length;++i) {
if(champ.value.charAt(i) < "0" || champ.value.charAt(i) > "9") {
surligne(champ, true);
return false;
}else surligne(champ, false);
}
return true;
}
function verifDu(champ) {
for(i=0;i<champ.value.length;++i) {
if(champ.value.charAt(i) < "0" || champ.value.charAt(i) > "9") {
surligne(champ, true);
return false;
}else surligne(champ, false);
}
return true;
}
function verifLieu(champ) {
var regex = /^[a-zA-Z0-9_-]{6,20}$/;
if(!regex.test(champ.value)) {
surligne(champ, true);
return false;
}else{
surligne(champ, false);
return true;
}
}
function verifUser(champ) {
var regex = /^[a-zA-Z0-9 _-]{6,20}$/;
if(!regex.test(champ.value)) {
surligne(champ, true);
return false;
}else{
surligne(champ, false);
return true;
}
}
function verifForm(dec) {
var moisOk = verifMois(dec.elements['mois']);
var semestreOk = verifSem(dec.elements['sem']);
var anneeOk = verifAnnee(dec.elements['annee']);
var nbreOk = verifNbre(dec.elements['salarie']);
var totalOk = verifTotal(dec.elements['imposable']);
var duOk = verifDu(dec.elements['du']);
var lieuOk = verifLieu(dec.elements['lieu']);
var userOk = verifUser(dec.elements['usersaisie']);
if((moisOk || semestreOk) && anneeOk && nbreOk && totalOk && duOk && lieuOk && userOk) {
return true;
}else{
alert("Veuillez remplir correctement tous les champs");
return false;
}
}
le code du formulaire:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<script type="text/javascript" src="verification.js"></script>
</head>
<body bgcolor="#66FF99">
<p align="center"><strong> </strong></p>
<ul>
<li>
<div align="left">
<strong align="left"></strong>
</div>
</li>
</ul>
<form id="form" name="dec" method="post" action="insertion.php" onsubmit="return verifForm(this)">
<strong>I. PERIODE</strong> Mois
<select name="mois" onblur="verifMois(this)">
<option selected="selected"> </option>
<option>01</option>
<option>02</option>
<option>03</option>
<option>04</option>
<option>05</option>
<option>06</option>
<option>07</option>
<option>08</option>
<option>09</option>
<option>10</option>
<option>11</option>
<option>12</option>
</select>
Semestre
<select name="sem" onblur="verifSem(this)">
<option selected="selected"> </option>
<option>01</option>
<option>02</option>
</select>
Année
<select name="annee" onblur="verifAnnee(this)">
<option selected="selected"> </option>
<option>2009</option>
<option>2010</option>
<option>2011</option>
<option>2012</option>
<option>2013</option>
<option>2014</option>
<option>2015</option>
<option>2014</option>
<option>2015</option>
<option>2016</option>
<option>2017</option>
<option>2018</option>
<option>2019</option>
<option>2020</option>
</select>
<table width="653" border="0">
<tr>
<td width="221"><div align="center"><strong>Nombre </strong></div></td>
<td width="220"><div align="center"><strong>Total </strong></div></td>
<td width="190"><div align="center"><strong>Total du dû </strong></div></td>
</tr>
<tr>
<td>
<label>
<input size="30" type="text" name="salarie" onblur="verifNbre(this)"/>
</label>
</td>
<td>
<label>
<input size="30" type="text" name="imposable" onblur="verifTotal(this)"/>
</label>
</td>
<td>
<label>
<input size="30" type="text" name="du" onblur="verifDu(this)"/>
</label>
</td>
</tr>
</table>
<p>
<label></label>
A
<label>
<input size="30" type="text" name="lieu" onblur="verifLieu(this)" />
</label>
, le
<label>
<input name="datesaisie" type="text" />
</label>
</p>
<p>
<label>
Nom et Prénom
<input size="50" type="text" name="usersaisie" onblur="verifUser(this)"/>
</label>
</p>
<p>
<label>
<input type="submit" name="Submit" value="Enregistrer" />
</label>
<input type="reset" name="Submit2" value="Réinitialiser" />
</p>
<p> </p>
</form>
<p> </p>
</body>
</html>
typo - 17/01/10 14:25 Profil
Bonjour patheo,
Déjà, dans votre fichier "verification.js", pas d'en-tête, les fonctions directement.
Ensuite, quelques explications sur ce que je vous ai modifié.
- mois, semestre, année :
vous essayez de récupérer la valeur, mais vous n'avez pas de value déclarée dans les select
- une seule fonction pour les trois select où on va récupérer le texte des options
- nombre, total, dû :
return true, mais le background ne fonctionne pas
- pareil, une seule fonction pour les trois avec fonctionnement du background
- le lieu :
vous demandez un minimum de 6 caractères et un maximum de 20, mais des communes sont plus courtes
- Minimum descendu à 2 caractères (il y a même une commune ne comportant qu'une seule lettre, Y), pas de maximum
- la date :
pas de backgroud non plus, et pas de contrôle
- ajout d'un contrôle pour format jj/mm/aaaa
- nom prénom :
minimum de 6 caractères demandés
- maintenant, 2 minimum + espace + 2 minimum et pas de maximum
Pour la fonction "surligne()", vous passez deux paramètres à chaque fois : le champ, et true ou false.
Il suffit d'en passer deux si ce n'est pas bon, et un seul si c'est bon.
A la place de true vous pouvez mettre n'importe quoi, il suffit qu'il y en ait deux (exemple dans "verifOption()" et "verifLesNbres()"
Le "return false" ne sert à rien dans toutes les fonctions
Suppression de tous les mots "var", qui ne servent à rien
verification.js :
function surligne(champ, erreur) {
if(erreur) {
champ.style.backgroundColor = "#FF0000";
} else {
champ.style.backgroundColor = "#FFFFFF";
}
}
function verifOption(champ) {
leChamp=document.forms["dec"].elements[champ.name].options[document.forms["dec"].elements[champ.name].selectedIndex].text;
if(leChamp=="") {
surligne(champ, 'pasbon');
} else {
surligne(champ);
return true;
}
}
function verifLesNbres(champ) {
regex = /^[0-9]+$/;
if(!regex.test(champ.value)) {
surligne(champ, 'pasbon');
} else {
surligne(champ);
return true;
}
}
function verifLieu(champ) {
regex = /^[a-zA-Z0-9_-]{2,}$/;
if(!regex.test(champ.value)) {
surligne(champ, true);
} else {
surligne(champ);
return true;
}
}
function verifDate(champ) {
regex = /^[0-9]{2}\/[0-9]{2}\/[0-9]{4}$/;
if(!regex.test(champ.value)) {
surligne(champ, true);
} else {
surligne(champ);
return true;
}
}
function verifUser(champ) {
regex = /^[a-zA-Z-]{2,} [a-zA-Z-]{2,}$/;
if(!regex.test(champ.value)) {
surligne(champ, true);
} else {
surligne(champ);
return true;
}
}
function verifForm(dec) {
moisOk = verifOption(dec.mois);
semestreOk = verifOption(dec.sem);
anneeOk = verifOption(dec.annee);
nbreOk = verifLesNbres(dec.salarie);
totalOk = verifLesNbres(dec.imposable);
duOk = verifLesNbres(dec.du);
lieuOk = verifLieu(dec.lieu);
dateOk = verifDate(dec.datesaisie);
userOk = verifUser(dec.usersaisie);
if((moisOk || semestreOk) && anneeOk && nbreOk && totalOk && duOk && lieuOk && dateOk && userOk) {
return true;
} else {
alert("Veuillez remplir correctement tous les champs");
return false;
}
}
le formulaire :
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title></title>
<script type="text/javascript" src="verification.js"></script>
</head>
<body bgcolor="#66FF99">
<p align="center"><strong></strong></p>
<ul>
<li>
<div align="left"><strong> </strong></div>
</li>
</ul>
<form id="form" name="dec" method="post" action="insertion.php" onsubmit="return verifForm(this)">
<strong>I. PERIODE </strong> Mois
<select name="mois" onblur="verifOption(this)">
<option selected="selected"></option>
<option>01</option>
<option>02</option>
<option>03</option>
<option>04</option>
<option>05</option>
<option>06</option>
<option>07</option>
<option>08</option>
<option>09</option>
<option>10</option>
<option>11</option>
<option>12</option>
</select>
Semestre
<select name="sem" onblur="verifOption(this)">
<option selected="selected"></option>
<option>01</option>
<option>02</option>
</select>
Année
<select name="annee" onblur="verifOption(this)">
<option selected="selected"></option>
<option>2009</option>
<option>2010</option>
<option>2011</option>
<option>2012</option>
<option>2013</option>
<option>2014</option>
<option>2015</option>
<option>2014</option>
<option>2015</option>
<option>2016</option>
<option>2017</option>
<option>2018</option>
<option>2019</option>
<option>2020</option>
</select>
<table width="653" border="0">
<tr>
<td width="221"><div align="center"><strong>Nombre</strong></div></td>
<td width="220"><div align="center"><strong>Total</strong></div></td>
<td width="190"><div align="center"><strong>Total dû</strong></div></td>
</tr>
<tr>
<td><label><input size="30" type="text" name="salarie" onblur="verifLesNbres(this)" /></label></td>
<td><label><input size="30" type="text" name="imposable" onblur="verifLesNbres(this)" /></label></td>
<td><label><input size="30" type="text" name="du" onblur="verifLesNbres(this)" /></label></td>
</tr>
</table>
<p>
A
<label><input size="30" type="text" name="lieu" onblur="verifLieu(this)" /></label>
, le
<label><input size="30" type="text" name="datesaisie" onblur="verifDate(this)" /></label>
[jj/mm/aaaa]
</p>
<p>
<label>Nom et Prénom
<input size="50" type="text" name="usersaisie" onblur="verifUser(this)" />
[-- --]</label>
</p>
<p>
<label><input type="submit" name="Submit" value="Enregistrer" /></label>
<label><input type="reset" name="Submit2" value="Réinitialiser" /></label>
</p>
<p> </p>
</form>
<p> </p>
</body>
</html>
Bonne continuation.
patheo - 18/01/10 09:20 Profil Bonjour typo!
merci pour la promptitude et la clarté de ta réponse. ça m'a aidé à résoudre mon problème. merci beaucoup. tu es un as! A+ patheo - 18/01/10 17:11 Profil salut de retour mais cette fois avec un autre problème.en fait je veux que les nombres soit séparés en milliers (ex: 100000==>100 000).
pour cela j'ai ajouté la fonction format_mil(nbre) suivante dans mon fichier verification et j'ai modifié mon formulaire en conséquence. comme suit:
verification.js :
function format_mil(nbre)
{
var str_nbre = "";
for (cpt = nbre.toString().length - 3; cpt >= 0; cpt = cpt - 3 )
{
str_nbre = nbre.toString().substr(cpt, 3) + "." + str_nbre;
}
if ( (nbre.toString().length % 3) != 0 )
str_nbre = nbre.toString().substr(0, nbre.toString().length % 3) + "." + str_nbre;
str_nbre = str_nbre.substr(0, str_nbre.length - 1);
return (str_nbre);
}
function surligne(champ, erreur) {
if(erreur) {
champ.style.backgroundColor = "#FF0000";
} else {
champ.style.backgroundColor = "#FFFFFF";
}
}
function verifOption(champ) {
leChamp=document.forms["dec"].elements[champ.name].options[document.forms["dec"].elements[champ.name].selectedIndex].text;
if(leChamp=="") {
surligne(champ, 'pasbon');
} else {
surligne(champ);
return true;
}
}
function verifLesNbres(champ) {
regex = /^[0-9]+$/;
if(!regex.test(champ.value)) {
surligne(champ, 'pasbon');
} else {
surligne(champ);
return true;
}
}
function verifLieu(champ) {
regex = /^[a-zA-Z0-9_-]{2,}$/;
if(!regex.test(champ.value)) {
surligne(champ, true);
} else {
surligne(champ);
return true;
}
}
function verifDate(champ) {
regex = /^[0-9]{2}\/[0-9]{2}\/[0-9]{4}$/;
if(!regex.test(champ.value)) {
surligne(champ, true);
} else {
surligne(champ);
return true;
}
}
function verifUser(champ) {
regex = /^[a-zA-Z-]{2,} [a-zA-Z-]{2,}$/;
if(!regex.test(champ.value)) {
surligne(champ, true);
} else {
surligne(champ);
return true;
}
}
function verifForm(dec) {
moisOk = verifOption(dec.mois);
semestreOk = verifOption(dec.sem);
anneeOk = verifOption(dec.annee);
nbreOk = verifLesNbres(dec.salarie);
totalOk = verifLesNbres(dec.imposable);
duOk = verifLesNbres(dec.du);
lieuOk = verifLieu(dec.lieu);
dateOk = verifDate(dec.datesaisie);
userOk = verifUser(dec.usersaisie);
if((moisOk || semestreOk) && anneeOk && nbreOk && totalOk && duOk && lieuOk && dateOk && userOk) {
return true;
} else {
alert("Veuillez remplir correctement tous les champs");
return false;
}
}
le formulaire :
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title></title>
<script type="text/javascript" src="verification.js"></script>
</head>
<body bgcolor="#66FF99">
<p align="center"><strong></strong></p>
<ul>
<li>
<div align="left"><strong> </strong></div>
</li>
</ul>
<form id="form" name="dec" method="post" action="insertion.php" onsubmit="return verifForm(this)">
<strong>I. PERIODE </strong> Mois
<select name="mois" onblur="verifOption(this)">
<option selected="selected"></option>
<option>01</option>
<option>02</option>
<option>03</option>
<option>04</option>
<option>05</option>
<option>06</option>
<option>07</option>
<option>08</option>
<option>09</option>
<option>10</option>
<option>11</option>
<option>12</option>
</select>
Semestre
<select name="sem" onblur="verifOption(this)">
<option selected="selected"></option>
<option>01</option>
<option>02</option>
</select>
Année
<select name="annee" onblur="verifOption(this)">
<option selected="selected"></option>
<option>2009</option>
<option>2010</option>
<option>2011</option>
<option>2012</option>
<option>2013</option>
<option>2014</option>
<option>2015</option>
<option>2014</option>
<option>2015</option>
<option>2016</option>
<option>2017</option>
<option>2018</option>
<option>2019</option>
<option>2020</option>
</select>
<table width="653" border="0">
<tr>
<td width="221"><div align="center"><strong>Nombre</strong></div></td>
<td width="220"><div align="center"><strong>Total</strong></div></td>
<td width="190"><div align="center"><strong>Total dû</strong></div></td>
</tr>
<tr>
<td><label><input size="30" type="text" name="salarie" onblur="verifLesNbres(this); format_mil(this)" /></label></td>
<td><label><input size="30" type="text" name="imposable" onblur="verifLesNbres(this); format_mil(this)" /></label></td>
<td><label><input size="30" type="text" name="du" onblur="verifLesNbres(this); format_mil(this)" /></label></td>
</tr>
</table>
<p>
A
<label><input size="30" type="text" name="lieu" onblur="verifLieu(this)" /></label>
, le
<label><input size="30" type="text" name="datesaisie" onblur="verifDate(this)" /></label>
[jj/mm/aaaa]
</p>
<p>
<label>Nom et Prénom
<input size="50" type="text" name="usersaisie" onblur="verifUser(this)" />
[-- --]</label>
</p>
<p>
<label><input type="submit" name="Submit" value="Enregistrer" /></label>
<label><input type="reset" name="Submit2" value="Réinitialiser" /></label>
</p>
<p> </p>
</form>
<p> </p>
</body>
</html>
mais à l'exécution ça ne me donne rien.
encore de l'aide svp. typo - 19/01/10 12:15 Profil
Bonjour patheo,
Supprimez votre fonction "format_mil()".
Remettez les "input" comme ils étaient :
<td><label><input size="30" type="text" name="salarie" onblur="verifLesNbres(this)" /></label></td>
<td><label><input size="30" type="text" name="imposable" onblur="verifLesNbres(this)" /></label></td>
<td><label><input size="30" type="text" name="du" onblur="verifLesNbres(this)" /></label></td>
Changez la fonction "verifLesNbres()", mettez celle-ci :
function verifLesNbres(champ) {
// les milliers
regex = / /g;
champ.value = champ.value.replace(regex, "");
regex = /(-?[0-9]+)([0-9]{3})/,
nValue=champ.value;
sep = " ";
while(regex.test(nValue)) {
nValue = nValue.replace(regex, '$1'+sep+'$2');
}
champ.value = nValue;
// le background
regex = /^[0-9 ]+$/;
if(!regex.test(champ.value)) {
surligne(champ, 'pasbon');
} else {
surligne(champ);
return true;
}
}
Bonne continuation
patheo - 21/01/10 18:55 Profil merci typo. ton code marche bien. le hic c'est que je ne peut plus faire d'addition avec ces nombres. merci typo - 21/01/10 19:38 Profil
Bonjour patheo,
Elle est où la fonction "addition". Sur tous les posts, il n'y en a pas.
Quelles opérations faut-il faire, entre quoi et quoi ?
patheo - 22/01/10 09:41 Profil bonjour typo!
en fait, les calculs ne se font pas dans ce formulaire voici celui qui contient les calculs, je t'envoie en plus le js ce calcul et le js de verification.
le code de verificationdec2
function surligne(champ, erreur)
{
if(erreur)
champ.style.backgroundColor ="#eed0d4";
else
champ.style.backgroundColor = "#ffffff";
}
function verifOption(champ) {
leChamp=document.forms["dec2"].elements[champ.name].options[document.forms["dec2"].elements[champ.name].selectedIndex].text;
if(leChamp=="") {
surligne(champ, 'pasbon');
} else {
surligne(champ);
return true;
}
}
function verifLesNbre(champ){
regex = /^[0-9 ]+$/;
if(!regex.test(champ.value)) {
surligne(champ, 'pasbon');
} else {
surligne(champ);
return true;
}
}
function verifLieu(champ)
{
regex = /^[a-zA-Z0-9_-]{2,20}$/;
if(!regex.test(champ.value))
{
surligne(champ, true);
return false;
}
else
{
surligne(champ, false);
return true;
}
}
function verifUser(champ) {
regex = /^[a-zA-Z0-9 _-]{2,20}$/;
if(!regex.test(champ.value))
{
surligne(champ, true);
return false;
}
else
{
surligne(champ, false);
return true;
}
}
function verifForm(dec2)
{
moisOk = verifOption(dec2.tpa_mois);
semestreOk = verifOption(dec2.tpa_sem);
anneeOk = verifOption(dec2.tpa_annee);
montant1Ok = verifNbre(dec2.nomtant1pc);
montant2Ok = verifNbre(dec2.montant2pc);
remiseOk = verifNbre(dec2.remise);
lieuOk = verifLieu(dec2.lieu);
userOk = verifUser(dec2.usersaisie);
if( (!moisOk&&semestreOK||!semestreOk&&moisOK)&&anneeOk&&montant1Ok&&montant2Ok&&remiseOk&&lieuOk&&userOk)
return true;
else
{
alert("Veuillez remplir tous les champs.");
return false;
}
}
code de calcul
function calculResult1()
{
document.dec2.result1.value=Math.round((document.dec2.montant1.value * 0.08));
}
function calculResult2()
{
document.dec2.result2.value=Math.round((document.dec2.montant2.value*0.04));
}
function calcultotal()
{
document.dec2.totaldu.value=Math.round(((document.dec2.montant1.value * 0.08+ document.dec2.montant2.value*0.04)-document.dec2.remise.value));
}
code du formulaire
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<meta http-equiv="Pragma" content="no-cache" />
<title></title>
<script type="text/javascript" src="calcul.js"></script>
<script type="text/javascript" src="verificationdec2.js"></script>
</head>
<form id="form" name="dec2" method="post" action="" onsubmit="return verifForm(this)">
<strong>PERIODE</strong> Mois
<select name="mois" onblur="verifOption(this)">
<option></option>
<option <?php if (date('m')==1) echo "selected=\"selected\""; ?>>01</option>
<option <?php if (date('m')==2) echo "selected=\"selected\""; ?>>02</option>
<option <?php if (date('m')==3) echo "selected=\"selected\""; ?>>03</option>
<option <?php if (date('m')==4) echo "selected=\"selected\""; ?>>04</option>
<option <?php if (date('m')==5) echo "selected=\"selected\""; ?>>05</option>
<option <?php if (date('m')==6) echo "selected=\"selected\""; ?>>06</option>
<option <?php if (date('m')==7) echo "selected=\"selected\""; ?>>07</option>
<option <?php if (date('m')==8) echo "selected=\"selected\""; ?>>08</option>
<option <?php if (date('m')==9) echo "selected=\"selected\""; ?>>09</option>
<option <?php if (date('m')==10) echo "selected=\"selected\""; ?>>10</option>
<option <?php if (date('m')==11) echo "selected=\"selected\""; ?>>11</option>
<option <?php if (date('m')==12) echo "selected=\"selected\""; ?>>12</option>
</select>
Semestre
<select name="sem" onblur="verifOption(this)">
<option></option>
<option <?php if ( ((int)floor(date('m') / 6.1) + 1 ) == 1) echo "selected=\"selected\""; ?>>01</option>
<option <?php if ( ((int)floor(date('m') / 6.1) + 1 ) == 2) echo "selected=\"selected\""; ?>>02</option>
</select>
Année
<select name="annee" onblur="verifOption(this)">
<option></option>
<option <?php if (date('Y')==2009) echo "selected=\"selected\""; ?>>2009</option>
<option <?php if (date('Y')==2010) echo "selected=\"selected\""; ?>>2010</option>
<option <?php if (date('Y')==2011) echo "selected=\"selected\""; ?>>2011</option>
<option <?php if (date('Y')==2012) echo "selected=\"selected\""; ?>>2012</option>
<option <?php if (date('Y')==2013) echo "selected=\"selected\""; ?>>2013</option>
<option <?php if (date('Y')==2014) echo "selected=\"selected\""; ?>>2014</option>
<option <?php if (date('Y')==2015) echo "selected=\"selected\""; ?>>2015</option>
<option <?php if (date('Y')==2016) echo "selected=\"selected\""; ?>>2016</option>
<option <?php if (date('Y')==2017) echo "selected=\"selected\""; ?>>2017</option>
<option <?php if (date('Y')==2018) echo "selected=\"selected\""; ?>>2018</option>
<option <?php if (date('Y')==2019) echo "selected=\"selected\""; ?>>2019</option>
<option <?php if (date('Y')==2020) echo "selected=\"selected\""; ?>>2020</option>
<option <?php if (date('Y')==2021) echo "selected=\"selected\""; ?>>2021</option>
<option <?php if (date('Y')==2022) echo "selected=\"selected\""; ?>>2022</option>
</select>
<table width="530" border="0">
<tr>
<td width="189"><div align="center"><strong>Montant </strong></div></td>
<td width="171"><div align="center"><strong>Taux</strong></div></td>
<td width="148"><div align="center"><strong>Résultat </strong></div></td>
</tr>
<tr>
<td><label>
<input size="30" type="text" name="montant1" onblur="calculResult1(); calcultotal(); verifLesNbre(this)" />
</label></td>
<td><label>
<div align="center">8%</div>
</label></td>
<td><input type="text" name="result1" disabled="disabled"/> </td>
</tr>
<tr>
<td><label>
<input size="30"type="text" name="montant2" onblur="calculResult2(); calcultotal(); verifLesNbre(this)" />
</label></td>
<td><label>
<div align="center">4%
</div>
</label></td>
<td><input type="text" name="result2" disabled="disabled"/></td>
</tr>
<tr>
<td> </td>
<td>Remise</td>
<td><input type="text" name="remise" onblur="calcultotal(); verifLesNbre(this)" /></td>
</tr>
<tr>
<td> </td>
<td>Total du</td>
<td><input type="text" name="totaldu" disabled="disabled" /></td>
</tr>
</table>
<p>
<label></label>
A
<label>
<input size="30" type="text" name="lieu" onblur="verifLieu(this)"/>
</label>
, le
<label>
<input name="datesaisie" type="date" disabled="disabled" value="<?php echo date("d/ m/ Y"); ?>" />
</label>
</p>
<p>
<label>Nom et Prénom du déclarant
<input size="50" type="text" name="usersaisie" onblur="verifUser(this)"/>
</label>
</p>
<p>
<label></label>
<input type="submit" name="Submit3" value="Enregistrer" />
<input type="reset" name="Submit2" value="Réinitialiser" onclick="return confirm('Etes-vous sûr de vouloir tout effacer ?');"/>
</p>
<p> </p>
</form>
<p> </p>
</body>
</html>
voila
typo - 23/01/10 16:03 Profil
Bonjour patheo,
Je vous remets tout car neuf erreurs dans "verifForm(dec2)", ça le fait pas.
Vous avez dû mélanger les différents fichiers (tpa_mois=mois,moisOK=moisOk,nomtant1pc=montant1, etc.).
Dans le "head", appel d'un seul js.
Dans le "body", un appel à une seule fonction (onblur="calcultotal();", modifiée); et "verifLesNbres(champ)" est également modifiée.
Et j'ai ajouté les décimales, au cas où.
verificationdec2.js :
function surligne(champ, erreur) {
if ( erreur ) champ.style.backgroundColor = "#eed0d4";
else champ.style.backgroundColor = "#ffffff";
}
function verifOption(champ) {
leChamp = document.forms["dec2"].elements[champ.name].options[document.forms["dec2"].elements[champ.name].selectedIndex].text;
if ( leChamp == "" ) surligne(champ, 'pasbon');
else {
surligne(champ);
return true;
}
}
function verifLesNbres(champ) {
// les milliers
regex = / /g;
champ.value = champ.value.replace(regex, "");
nValue = champ.value;
regex = /(-?[0-9]+)([0-9]{3})/;
sep = " ";
while ( regex.test(nValue) ) {
nValue = nValue.replace(regex, '$1'+sep+'$2');
}
// les décimales
dec = "";
regex = /[.][0-9]$/;
regexPointSeul = /[.]$/;
if ( nValue.indexOf(".") != -1 && regex.test(nValue) ) dec = "0";
else if ( nValue.indexOf(".") != -1 && regexPointSeul.test(nValue) ) dec = "00";
else if ( nValue.indexOf(".") == -1 && nValue != "" ) dec = ".00";
champ.value = nValue + dec;
// le background
regex = /^[0-9 ]+[.0-9]{0,2}[0-9]$/;
if ( !regex.test(champ.value) ) surligne(champ, 'pasbon');
else {
surligne(champ);
return true;
}
}
function calcultotal() {
montant1 = document.dec2.montant1.value.replace(/ /g, "");
montant2 = document.dec2.montant2.value.replace(/ /g, "");
remise = document.dec2.remise.value.replace(/ /g, "");
document.dec2.result1.value = Math.round( (montant1 * 1.08 * 100) ) / 100;
document.dec2.result2.value = Math.round( (montant2 * 1.04 * 100) ) / 100;
document.dec2.totaldu.value = Math.round( (montant1 * 1.08 * 100) + (montant2 * 1.04 * 100) - (remise * 100) ) / 100;
lesChiffres = ["montant1","montant2","remise","result1","result2","totaldu"];
for ( i=0; i<lesChiffres.length; i++ ) {
champ = document.forms["dec2"].elements[lesChiffres[i]];
verifLesNbres(champ);
}
}
function verifLieu(champ) {
regex = /^[a-zA-Z0-9_-]{2,20}$/;
if ( !regex.test(champ.value) ) {
surligne(champ, true);
return false;
} else {
surligne(champ, false);
return true;
}
}
function verifUser(champ) {
regex = /^[a-zA-Z0-9 _-]{2,20}$/;
if ( !regex.test(champ.value) ) {
surligne(champ, true);
return false;
} else {
surligne(champ, false);
return true;
}
}
function verifForm(dec2) {
moisOk = verifOption(dec2.mois);
semestreOk = verifOption(dec2.sem);
anneeOk = verifOption(dec2.annee);
montant1Ok = verifLesNbres(dec2.montant1);
montant2Ok = verifLesNbres(dec2.montant2);
remiseOk = verifLesNbres(dec2.remise);
lieuOk = verifLieu(dec2.lieu);
userOk = verifUser(dec2.usersaisie);
if ( (moisOk || semestreOk) &&anneeOk&&montant1Ok&&montant2Ok&&remiseOk&&lieuOk&&userOk ) return true;
else {
alert("Veuillez remplir tous les champs.");
return false;
}
}
la page.php :
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<meta http-equiv="Pragma" content="no-cache" />
<title></title>
<!--
<script type="text/javascript" src="calcul.js"></script>
-->
<script type="text/javascript" src="verificationdec2.js"></script>
</head>
<form id="form" name="dec2" method="post" action="" onsubmit="return verifForm(this)">
<strong>PERIODE</strong> Mois
<select name="mois" onblur="verifOption(this)">
<option></option>
<option <?php if (date('m')==1) echo "selected=\"selected\""; ?>>01</option>
<option <?php if (date('m')==2) echo "selected=\"selected\""; ?>>02</option>
<option <?php if (date('m')==3) echo "selected=\"selected\""; ?>>03</option>
<option <?php if (date('m')==4) echo "selected=\"selected\""; ?>>04</option>
<option <?php if (date('m')==5) echo "selected=\"selected\""; ?>>05</option>
<option <?php if (date('m')==6) echo "selected=\"selected\""; ?>>06</option>
<option <?php if (date('m')==7) echo "selected=\"selected\""; ?>>07</option>
<option <?php if (date('m')==8) echo "selected=\"selected\""; ?>>08</option>
<option <?php if (date('m')==9) echo "selected=\"selected\""; ?>>09</option>
<option <?php if (date('m')==10) echo "selected=\"selected\""; ?>>10</option>
<option <?php if (date('m')==11) echo "selected=\"selected\""; ?>>11</option>
<option <?php if (date('m')==12) echo "selected=\"selected\""; ?>>12</option>
</select>
Semestre
<select name="sem" onblur="verifOption(this)">
<option></option>
<option <?php if ( ((int)floor(date('m') / 6.1) + 1 ) == 1) echo "selected=\"selected\""; ?>>01</option>
<option <?php if ( ((int)floor(date('m') / 6.1) + 1 ) == 2) echo "selected=\"selected\""; ?>>02</option>
</select>
Année
<select name="annee" onblur="verifOption(this)">
<option></option>
<option <?php if (date('Y')==2009) echo "selected=\"selected\""; ?>>2009</option>
<option <?php if (date('Y')==2010) echo "selected=\"selected\""; ?>>2010</option>
<option <?php if (date('Y')==2011) echo "selected=\"selected\""; ?>>2011</option>
<option <?php if (date('Y')==2012) echo "selected=\"selected\""; ?>>2012</option>
<option <?php if (date('Y')==2013) echo "selected=\"selected\""; ?>>2013</option>
<option <?php if (date('Y')==2014) echo "selected=\"selected\""; ?>>2014</option>
<option <?php if (date('Y')==2015) echo "selected=\"selected\""; ?>>2015</option>
<option <?php if (date('Y')==2016) echo "selected=\"selected\""; ?>>2016</option>
<option <?php if (date('Y')==2017) echo "selected=\"selected\""; ?>>2017</option>
<option <?php if (date('Y')==2018) echo "selected=\"selected\""; ?>>2018</option>
<option <?php if (date('Y')==2019) echo "selected=\"selected\""; ?>>2019</option>
<option <?php if (date('Y')==2020) echo "selected=\"selected\""; ?>>2020</option>
<option <?php if (date('Y')==2021) echo "selected=\"selected\""; ?>>2021</option>
<option <?php if (date('Y')==2022) echo "selected=\"selected\""; ?>>2022</option>
</select>
<table width="530" border="0">
<tr>
<td width="189"><div align="center"><strong>Montant </strong></div></td>
<td width="171"><div align="center"><strong>Taux</strong></div></td>
<td width="148"><div align="center"><strong>Résultat </strong></div></td>
</tr>
<tr>
<td><label>
<input size="30" type="text" name="montant1" onblur="calcultotal();" />
</label></td>
<td><label>
<div align="center">8%</div>
</label></td>
<td><input type="text" name="result1" disabled="disabled" /> </td>
</tr>
<tr>
<td><label>
<input size="30"type="text" name="montant2" onblur="calcultotal();" />
</label></td>
<td><label>
<div align="center">4%</div>
</label></td>
<td><input type="text" name="result2" disabled="disabled" /></td>
</tr>
<tr>
<td> </td>
<td>Remise</td>
<td><input type="text" name="remise" onblur="calcultotal();" /></td>
</tr>
<tr>
<td> </td>
<td>Total du</td>
<td><input type="text" name="totaldu" disabled="disabled" /></td>
</tr>
</table>
<p>
<label></label>
A
<label>
<input size="30" type="text" name="lieu" onblur="verifLieu(this)" />
</label>
, le
<label>
<input name="datesaisie" type="date" disabled="disabled" value="<?php echo date("d/ m/ Y"); ?>" />
</label>
</p>
<p>
<label>Nom et Prénom du déclarant
<input size="50" type="text" name="usersaisie" onblur="verifUser(this)" />
</label>
</p>
<p>
<label></label>
<input type="submit" name="Submit3" value="Enregistrer" />
<input type="reset" name="Submit2" value="Réinitialiser" onclick="return confirm('Etes-vous sûr de vouloir tout effacer ?');" />
</p>
<p> </p>
</form>
<p> </p>
</body>
</html>
Bonne continuation.
patheo - 25/01/10 11:06 Profil bonjour typo!
merci pour le code. ca marche!
je voulais enlever les décimales et pour cela j'ai mis la partie du code qui concerne les décimales en commentaire mais ça ne semble rien changer. ya t-il plus que ça à faire?
par ailleurs j'ai essayé d'appliquer le code à un autre formulaire (qui comporte beaucoup de calcul faisant intervenir plusieurs champs) en suivant la démarche que vous avez adopté pour ce formulaire mais le séparateurs ne s'applique pas, par contre, les vérifications et les calculs marchent.
le formulaire est trop long et les calculs trop nombreux et j'hésite à vous l'envoyer typo - 25/01/10 14:36 Profil
Bonjour patheo,
Pour le "beaucoup de calcul", postez uniquement le js, je suppose que dedans il y a le nom des champs.
Pour les décimales, il suffit d'enlever le " * 100 / 100".
Je vous ai mis aussi le contrôle des accents pour usersaisie et lieu :
function surligne(champ, erreur) {
if ( erreur ) champ.style.backgroundColor = "#eed0d4";
else champ.style.backgroundColor = "#ffffff";
}
function verifOption(champ) {
leChamp = document.forms["dec2"].elements[champ.name].options[document.forms["dec2"].elements[champ.name].selectedIndex].text;
if ( leChamp == "" ) surligne(champ, 'pasbon');
else {
surligne(champ);
return true;
}
}
function verifLesNbres(champ) {
// les milliers
regex = / /g;
champ.value = champ.value.replace(regex, "");
nValue = champ.value;
regex = /(-?[0-9]+)([0-9]{3})/;
sep = " ";
while ( regex.test(nValue) ) {
nValue = nValue.replace(regex, '$1'+sep+'$2');
}
champ.value = nValue;
// le background
regex = /^[0-9 ]+[.0-9]{0,2}[0-9]$/;
if ( !regex.test(champ.value) ) surligne(champ, 'pasbon');
else {
surligne(champ);
return true;
}
}
function calcultotal() {
montant1 = document.dec2.montant1.value.replace(/ /g, "");
montant2 = document.dec2.montant2.value.replace(/ /g, "");
remise = document.dec2.remise.value.replace(/ /g, "");
document.dec2.result1.value = Math.round( montant1 * 1.08 );
document.dec2.result2.value = Math.round( montant2 * 1.04 );
document.dec2.totaldu.value = Math.round( (montant1 * 1.08 ) + (montant2 * 1.04) - remise );
lesChiffres = ["montant1","montant2","remise","result1","result2","totaldu"];
for ( i=0; i<lesChiffres.length; i++ ) {
champ = document.forms["dec2"].elements[lesChiffres[i]];
verifLesNbres(champ);
}
}
function verifLieu(champ) {
regex = /^[a-zA-Z0-9àâäéèêëïîöôùûüç_-]{2,20}$/;
if ( !regex.test(champ.value) ) {
surligne(champ, true);
return false;
} else {
surligne(champ, false);
return true;
}
}
function verifUser(champ) {
regex = /^[a-zA-Z0-9 àâäéèêëïîöôùûüç_-]{2,20}$/;
if ( !regex.test(champ.value) ) {
surligne(champ, true);
return false;
} else {
surligne(champ, false);
return true;
}
}
function verifForm(dec2) {
moisOk = verifOption(dec2.mois);
semestreOk = verifOption(dec2.sem);
anneeOk = verifOption(dec2.annee);
montant1Ok = verifLesNbres(dec2.montant1);
montant2Ok = verifLesNbres(dec2.montant2);
remiseOk = verifLesNbres(dec2.remise);
lieuOk = verifLieu(dec2.lieu);
userOk = verifUser(dec2.usersaisie);
if ( (moisOk || semestreOk) &&anneeOk&&montant1Ok&&montant2Ok&&remiseOk&&lieuOk&&userOk ) return true;
else {
alert("Veuillez remplir tous les champs.");
return false;
}
}
patheo - 25/01/10 17:08 Profil Bonsoir typo!
Le fait d'avoir enlever le " * 100 / 100" ne semble pas changer grand chose. j'ai toujours les décimales.
pour le "beacoup de calcul" voici le js:
function surligne(champ, erreur)//fonction permettant de donner une couleur aux champs dont les contenus sont erronnés
{
if(erreur)
champ.style.backgroundColor ="#eed0d4";
else
champ.style.backgroundColor = "#ffffff";
}
function verifNbre(champ)// fonction permettant de vérifier la saisie des nombres
{
// les milliers
regex = / /g;
champ.value = champ.value.replace(regex, "");
nValue = champ.value;
regex = /(-?[0-9]+)([0-9]{3})/;
sep = " ";
while ( regex.test(nValue) ) {
nValue = nValue.replace(regex, '$1'+sep+'$2');
}
// les décimales
dec = "";
regex = /[.][0-9]$/;
regexPointSeul = /[.]$/;
if ( nValue.indexOf(".") != -1 && regex.test(nValue) ) dec = "0";
else if ( nValue.indexOf(".") != -1 && regexPointSeul.test(nValue) ) dec = "00";
else if ( nValue.indexOf(".") == -1 && nValue != "" ) dec = ".00";
champ.value = nValue + dec;
// le background
regex = /^[0-9 ]+[.0-9]{0,2}[0-9]$/;
if ( !regex.test(champ.value) ) surligne(champ, 'pasbon');
else {
surligne(champ);
return true;
}
}
function cht()// fonction servnt à calculer le chiffre d'affaires taxable
{
som_act1=(parseInt(exportation)+parseInt(exolegal));// somme des exportations et des exonérations légales
som_act2=(parseInt(exoconv)+parseInt(openontaxable));// somme des exonérations conventionnelles et des autres opérations non taxables
som_act=som_act1+som_act2;
diff=(catht-som_act);// différence entre le chiffre d'affaires total hors tva et somm_act
if (som_act1>=0&&som_act2>=0&&som_act>=0&&document.tva.catht.value>=0&&document.tva.livsoimeme.value!="")
{
document.tva.cathtva.value=(diff+parseInt(livsoimeme)); // chiffre d'affaires taxable
document.tva.ht.value=(diff+parseInt(livsoimeme)); // repport du chiffe chiffre d'affaires taxable dans le champ ht
}
}
function tvabrut()// calcul de la tva brut
{
if(document.tva.regul.value!="")
document.tva.brute.value=Math.round( (ht*0.18));
}
function totalbrute()// calcul de la tva totale brute
{
if(document.tva.regul.value!="")
document.tva.totalbrut.value=Math.round((parseInt(document.tva.ht.value)*0.18+parseInt(document.tva.regul.value)));
}
function prorata()// calcul de la tva deductible au prorata
{
pc=parseInt(document.tva.pcdeduct.value)*0.01;
if(document.tva.pcdeduct.value!="")
document.tva.tva_prorata.value=Math.round(parseInt(document.tva.deductible.value)*pc);
}
function total_deduction()// calcul de la tva deductible totale
{
pc=(parseInt(document.tva.pcdeduct.value)*0.01);// pourcantage de deduction
if(document.tva.creditreporte.value!="")
document.tva.totaldeduction.value=Math.round((parseInt(document.tva.deductible.value)*pc+parseInt(document.tva.creditreporte.value)));
}
function net_tva()// calcul de la tva net à payer ou du crédit tva
{
tvabrut=parseInt(document.tva.totalbrut.value);
totaldeduct=parseInt(document.tva.totaldeduction.value);
if(tvabrut>totaldeduct)
{
document.tva.net.value=parseInt(document.tva.totalbrut.value)-parseInt(document.tva.totaldeduction.value);
document.tva.credit.value=0;
}
else {
document.tva.credit.value=parseInt(document.tva.totaldeduction.value)-parseInt(document.tva.totalbrut.value);
document.tva.net.value=0;
}
}
merci
typo - 25/01/10 17:40 Profil
patheo,
Je regarde ça.
Pour l'autre form (dec2), les * 100 / 100 et la fonction "verifLesNbres()", modifiée, avec "champ.value = nValue;".
Je vous ai tout remis au-dessus. Prenez ce dernier fichier.
41 réponses - Page : 1 2 3 Suivant
Tous les forums > JavaScript > problème de compatibilité d'un code avec internet explorer