Tout JavaScript.com - Scripts, Tutoriaux, Forums pour webmasters et développeurs
Retour à l'accueil
Rechercher :    

Les indispensables
Magic Menu
Les meilleurs scripts
Les forums
Les tutoriaux
La référence JavaScript
Les actus du net
Les petites annonces

Shopping
Le guide complet
Hébergement web

Les javascripts
Les plus vus
Les mieux notés
La boutique

Les tutoriaux
Introduction javascript
Les formulaires
AJAX / XMLHTTPRequest
Le DHTML
Les expressions régulières
Introduction au PHP
Tous les tutoriaux

Les services
Les questions fréquentes
Les forums | Le chat
L'annuaire de sites
Le livre d'or
Contacts
A propos du site
La newsletter
 Inscription à la newsletter
HTML - Texte

Les partenaires
Beauté-test
Mémoclic
Glandouille.com
Révélateur.com
Foorby, favoris en ligne
Config Mac
jquery
Hébergement gratuit
Conseils pour les paris en ligne
Acheter un Nom de Domaine



Codes promotions, réductions et bons plans pour vos achats en ligne











Connexion :
Login :
Password :
Se souvenir de moi
 S'enregistrer
Menu Forums
Rechercher
Questions Fréquentes
Liste des avatars
Liste des connectés
 
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&ucirc; </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&eacute;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&eacute;initialiser" />

</p>

<p>&nbsp;</p>

</form>

<p>&nbsp;</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>&nbsp;</strong></div>
</li>
</ul>
<form id="form" name="dec" method="post" action="insertion.php" onsubmit="return verifForm(this)">
<strong>I. PERIODE&nbsp;</strong>&nbsp;Mois&nbsp;
<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>
&nbsp;Semestre&nbsp;
<select name="sem" onblur="verifOption(this)">
<option selected="selected"></option>
<option>01</option>
<option>02</option>
</select>
&nbsp;Ann&eacute;e&nbsp;
<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&ucirc;</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&nbsp;
<label><input size="30" type="text" name="lieu" onblur="verifLieu(this)" /></label>
, le&nbsp;
<label><input size="30" type="text" name="datesaisie" onblur="verifDate(this)" /></label>
&nbsp;[jj/mm/aaaa]
</p>
<p>
<label>Nom et Pr&eacute;nom&nbsp;
<input size="50" type="text" name="usersaisie" onblur="verifUser(this)" />
&nbsp;[--&nbsp;--]</label>
</p>
<p>
<label><input type="submit" name="Submit" value="Enregistrer" /></label>
<label><input type="reset" name="Submit2" value="R&eacute;initialiser" /></label>
</p>
<p>&nbsp;</p>
</form>
<p>&nbsp;</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>&nbsp;</strong></div>

</li>

</ul>

<form id="form" name="dec" method="post" action="insertion.php" onsubmit="return verifForm(this)">

<strong>I. PERIODE&nbsp;</strong>&nbsp;Mois&nbsp;

<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>

&nbsp;Semestre&nbsp;

<select name="sem" onblur="verifOption(this)">

<option selected="selected"></option>

<option>01</option>

<option>02</option>

</select>

&nbsp;Ann&eacute;e&nbsp;

<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&ucirc;</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&nbsp;

<label><input size="30" type="text" name="lieu" onblur="verifLieu(this)" /></label>

, le&nbsp;

<label><input size="30" type="text" name="datesaisie" onblur="verifDate(this)" /></label>

&nbsp;[jj/mm/aaaa]

</p>

<p>

<label>Nom et Pr&eacute;nom&nbsp;

<input size="50" type="text" name="usersaisie" onblur="verifUser(this)" />

&nbsp;[--&nbsp;--]</label>

</p>

<p>

<label><input type="submit" name="Submit" value="Enregistrer" /></label>

<label><input type="reset" name="Submit2" value="R&eacute;initialiser" /></label>

</p>

<p>&nbsp;</p>

</form>

<p>&nbsp;</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>&nbsp;</td>
<td>Remise</td>
<td><input type="text" name="remise" onblur="calcultotal(); verifLesNbre(this)" /></td>
</tr>
<tr>
<td>&nbsp;</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&eacute;nom du d&eacute;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&eacute;initialiser" onclick="return confirm('Etes-vous sûr de vouloir tout effacer ?');"/>
</p>
<p>&nbsp;</p>
</form>
<p>&nbsp;</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>&nbsp;</td>
<td>Remise</td>
<td><input type="text" name="remise" onblur="calcultotal();" /></td>
</tr>
<tr>
<td>&nbsp;</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&eacute;nom du d&eacute;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&eacute;initialiser" onclick="return confirm('Etes-vous sûr de vouloir tout effacer ?');" />
</p>
<p>&nbsp;</p>
</form>
<p>&nbsp;</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



| © Tout JavaScript.com 1999-2005 | Scripts | Tutoriaux | Forums | Référence | Magic Menu V2 | Mailociraptor | Petites annonces informatiques |


Edité par DevTribu sarl  Google
Serveur dédié btssd : Page générée en 22 msec
08/09/2010 15:46:01 - OB = off