Bonsoir,
Ça y est j'y suis enfin, j'ai réussi à obtenir ce que je voulais:
<span>
<label for="batiment">Bâtiment: </label><input type="text" name="batiment" id="bt" maxlength="10" onchange="verifBat(this.value)"/>
</span>
[javascript]function verifBat(batiment) {
var bat = batiment.toUpperCase();
var longueur = bat.length;
var motif = "^(B){1}([0-9]{1,3}$)";
var drapeau = "gi";
var exp = new RegExp(motif,drapeau);
// Si la valeur rentrée commence bien par B suivie de 1 à 3 chiffres alors
if (exp.test(bat)){
var regBat = new RegExp ("(B)","g");
switch (longueur){
case 2:var newBat = bat.replace(regBat,"B00");break;// Si on a 2 caractères soit Bx alors on remplace le B par B00
case 3:var newBat = bat.replace(regBat,"B0");break;// Si on a 2 caractères soit Bxx alors on remplace le B par B0
default:var newBat = bat;break;// Si cela ne correspond pas au critères précedents alors on retourne la valeur rentrée par l'utilisateur
}document.getElementById('bt').value = newBat;
}
// La valeur rentrée ne commence pas par Bxxx
else{
// On teste si la valeur est seulement composée de chiffre (010;10;etc...)
if(!isNaN(bat)){
// Si oui, on teste si il est inférieur à 3 chiffres pour rajouter B0 si besoin
switch (longueur){
case 1:var valeur = 'B00';var newBat = valeur.concat(bat);break;// N'ayant que 1 chiffres on insère B00 avant les 2 chiffres
case 2:var valeur = 'B0';var newBat = valeur.concat(bat);break;// N'ayant que 2 chiffres on insère B0 avant les 2 chiffres
case 3:var valeur = 'B';var newBat = valeur.concat(bat);break;// N'ayant que 3 chiffres on insère B avant les 2 chiffres
default:var newBat = bat;break;// Si cela ne correspond pas au critères précedents alors on retourne la valeur rentrée par l'utilisateur
}document.getElementById('bt').value = newBat;
}
}
}[/javascript]
Voili voilou.
Encore merci de ton aide