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.