verification formulaire asynchrone
Posté : 07 juin 2012, 11:09
Bonjour à tous, je souhaiterais verifier un numero siret ou siren de manière asynchrone pour un formulaire,
je n'y connais pas grand chose en ajax.
j'ai donc fais cela:
[javascript]
<div id="siret"></div>
<script language="javascript">
var bPseudo = false; // servira pour empêcher de poster le formulaire si vérification pseudo non ok
function verifsiret(pseudo) {
//XMLHttpRequest est supporté par Internet Explorer 5.0+, Safari 1.2, Mozilla 1.0 / Firefox, Netscape 7
if(document.all) var XhrObj = new ActiveXObject("Microsoft.XMLHTTP"); //Internet Explorer
else var XhrObj = new XMLHttpRequest(); //Mozilla
content = document.getElementById("siret"); //zone d'affichage
XhrObj.open("POST", "verifsiret.php");
//Ok pour la page cible
XhrObj.onreadystatechange = function()
{
if (XhrObj.readyState == 4 && XhrObj.status == 200) {
if (XhrObj.responseText == 'OK') {
// ok nouveau pseudo
content.innerHTML='<img src="images/accepter.png" alt=""/> Ok';
} else {
// erreur pseudo déjà existant
content.innerHTML='<img src="images/refuser.png" alt=""/> Déjà pris';
}
}
}
XhrObj.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
XhrObj.send('p='+siret);
}
</script>[/javascript]
et mis cet input:
[javascript]function EstSirenValide(siren) {
var estValide;
if ( (siren.length != 9) || (isNaN(siren)) )
estValide = false;
else {
// Donc le SIREN est un numérique à 9 chiffres
var somme = 0;
var tmp;
for (var cpt = 0; cpt<siren.length; cpt++) {
if ((cpt % 2) == 1) { // Les positions paires : 2ème, 4ème, 6ème et 8ème chiffre
tmp = siren.charAt(cpt) * 2; // On le multiplie par 2
if (tmp > 9)
tmp -= 9; // Si le résultat est supérieur à 9, on lui soustrait 9
}
else
tmp = siren.charAt(cpt);
somme += parseInt(tmp);
}
if ((somme % 10) == 0)
estValide = true; // Si la somme est un multiple de 10 alors le SIREN est valide
else
estValide = false;
}
return estValide;
}
/**
* @name EstSiretValide
*
* @param Le code SIRET dont on veut vérifier la validité.
*
* @return Un booléen qui vaut 'true' si le code SIRET passé en
* paramètre est valide, false sinon.
*/
function EstSiretValide(siret) {
var estValide;
if ( (siret.length != 14) || (isNaN(siret)) )
estValide = false;
else {
// Donc le SIRET est un numérique à 14 chiffres
// Les 9 premiers chiffres sont ceux du SIREN (ou RCS), les 4 suivants
// correspondent au numéro d'établissement
// et enfin le dernier chiffre est une clef de LUHN.
var somme = 0;
var tmp;
for (var cpt = 0; cpt<siret.length; cpt++) {
if ((cpt % 2) == 0) { // Les positions impaires : 1er, 3è, 5è, etc...
tmp = siret.charAt(cpt) * 2; // On le multiplie par 2
if (tmp > 9)
tmp -= 9; // Si le résultat est supérieur à 9, on lui soustrait 9
}
else
tmp = siret.charAt(cpt);
somme += parseInt(tmp);
}
if ((somme % 10) == 0)
estValide = true; // Si la somme est un multiple de 10 alors le SIRET est valide
else
estValide = false;
}
return estValide;
}
var counter = 0;[/javascript]
mais en dépit de toutes ces précaution, cela ne fonctionne pas, je n'ai pourtant aucun message d'erreur, je suis en local sur wamp
Par avance merci pour votre aide.
je n'y connais pas grand chose en ajax.
j'ai donc fais cela:
[javascript]
<div id="siret"></div>
<script language="javascript">
var bPseudo = false; // servira pour empêcher de poster le formulaire si vérification pseudo non ok
function verifsiret(pseudo) {
//XMLHttpRequest est supporté par Internet Explorer 5.0+, Safari 1.2, Mozilla 1.0 / Firefox, Netscape 7
if(document.all) var XhrObj = new ActiveXObject("Microsoft.XMLHTTP"); //Internet Explorer
else var XhrObj = new XMLHttpRequest(); //Mozilla
content = document.getElementById("siret"); //zone d'affichage
XhrObj.open("POST", "verifsiret.php");
//Ok pour la page cible
XhrObj.onreadystatechange = function()
{
if (XhrObj.readyState == 4 && XhrObj.status == 200) {
if (XhrObj.responseText == 'OK') {
// ok nouveau pseudo
content.innerHTML='<img src="images/accepter.png" alt=""/> Ok';
} else {
// erreur pseudo déjà existant
content.innerHTML='<img src="images/refuser.png" alt=""/> Déjà pris';
}
}
}
XhrObj.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
XhrObj.send('p='+siret);
}
</script>[/javascript]
et mis cet input:
<p><label for='siret'>Siret</label><input type='text' name='client["+counter+"][siret]' onBlur='verifsiret(this.value)'></p>
et dans la page de verification j'ai mis les fonctions:[javascript]function EstSirenValide(siren) {
var estValide;
if ( (siren.length != 9) || (isNaN(siren)) )
estValide = false;
else {
// Donc le SIREN est un numérique à 9 chiffres
var somme = 0;
var tmp;
for (var cpt = 0; cpt<siren.length; cpt++) {
if ((cpt % 2) == 1) { // Les positions paires : 2ème, 4ème, 6ème et 8ème chiffre
tmp = siren.charAt(cpt) * 2; // On le multiplie par 2
if (tmp > 9)
tmp -= 9; // Si le résultat est supérieur à 9, on lui soustrait 9
}
else
tmp = siren.charAt(cpt);
somme += parseInt(tmp);
}
if ((somme % 10) == 0)
estValide = true; // Si la somme est un multiple de 10 alors le SIREN est valide
else
estValide = false;
}
return estValide;
}
/**
* @name EstSiretValide
*
* @param Le code SIRET dont on veut vérifier la validité.
*
* @return Un booléen qui vaut 'true' si le code SIRET passé en
* paramètre est valide, false sinon.
*/
function EstSiretValide(siret) {
var estValide;
if ( (siret.length != 14) || (isNaN(siret)) )
estValide = false;
else {
// Donc le SIRET est un numérique à 14 chiffres
// Les 9 premiers chiffres sont ceux du SIREN (ou RCS), les 4 suivants
// correspondent au numéro d'établissement
// et enfin le dernier chiffre est une clef de LUHN.
var somme = 0;
var tmp;
for (var cpt = 0; cpt<siret.length; cpt++) {
if ((cpt % 2) == 0) { // Les positions impaires : 1er, 3è, 5è, etc...
tmp = siret.charAt(cpt) * 2; // On le multiplie par 2
if (tmp > 9)
tmp -= 9; // Si le résultat est supérieur à 9, on lui soustrait 9
}
else
tmp = siret.charAt(cpt);
somme += parseInt(tmp);
}
if ((somme % 10) == 0)
estValide = true; // Si la somme est un multiple de 10 alors le SIRET est valide
else
estValide = false;
}
return estValide;
}
var counter = 0;[/javascript]
mais en dépit de toutes ces précaution, cela ne fonctionne pas, je n'ai pourtant aucun message d'erreur, je suis en local sur wamp
Par avance merci pour votre aide.