|
|
|
| /* Edition Française */ |
| « QuelleEstLaTailleDeMaStackTRI(T) | GetDroitUtilisateur(T) » |
David Boissonnault nous envoie une petite perle qu'il a trouvé par hasard sur le site de la poste Canadienne. Ce sont trois fonctions JavaScript qui sont présentes sur la page de recherche d'une tranche d'adresse.Vous remarquerez que chacune de ces trois fonctions est optimisable en une seule et simple ligne.
La première fonction permet de faire un RAZ sur les champs du formulaire : Utiliser document.forms['SearchRange'].clear(); ? Non, trop simple, trop "classique" je préfère largement la version postale canadienne :
function fClearAllFields()
{
var iCount;
for (iCount = 0; iCount < document.SearchRange.elements.length; iCount++)
{
if (document.SearchRange.elements[iCount].type == "text")
{
//clear the text field
document.SearchRange.elements[iCount].value = "";
}
else
{
//reset combo box to select
if (document.SearchRange.elements[iCount].type == "select-one")
{
document.SearchRange.elements[iCount].options[0].selected = true;
}
}
}
}
Ensuite, on passe à la deuxième fonction : celle pour supprimer les espaces.
strvar.replace(/^\s+|\s+$/g,""); ? Trop rapide, mieux vaut tester si la chaîne est nulle, retirer les espaces du début de chaîne un par un, puis retirer les espaces de fin de chaîne un par un :
function fTrim(sWord)
{
//trim spaces from the front
if(sWord == "")
{
return "";
}
while(sWord.charAt(0) == " ")
{
//alert("front");
if(sWord.length > 1)
{
sWord = sWord.substr(1, sWord.length);
}
else
{
return "";
}
}
//trim spaces from the back
//if the word makes it this far, there is SOMETHING in the variable
//other than spaces
while(sWord.charAt(sWord.length-1) == " ")
{
//alert("back");
sWord = sWord.substr(0, sWord.length - 1);
}
//alert("<" + sWord + ">");
return sWord;
}
Pour finir la classique fonction de validation postale. Après tout, qui mieux que la poste peut valider un code postal? strval.replace(' ','').toUpperCase().match(/^([A-Z][0-9]){3}$/);. Et bien .... pas vraiment.
function fValidatePostalCode(objPostalCode, objPCtext, objPCtext2)
{
var digits = "0123456789"
var letters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
var strPostalCode;
var strPostalCode2;
strPostalCode = fTrim(objPostalCode).toUpperCase();
objPostalCode.value = strPostalCode;
if(strPostalCode == "")
{
alert("S'il vous pla�t entrez un code postal.", objPostalCode);
sblncheckError = false;
return false;
}
if (strPostalCode.length == 7)
{
strFourthChar = strPostalCode.substr(3,1);
if ((strFourthChar != " ") && (strFourthChar != "-"))
{
alert("Format de code postal non valide.", objPostalCode);
objPCtext.value ="" ;
sblncheckError = false;
return false;
}
else
{
if (strFourthChar == " ")
{
strPostalCode2= strPostalCode.replace(" ", "");
}
else
{
strPostalCode2 = strPostalCode.replace("-", "");
}
strPostalCode = strPostalCode2;
}
}
if(strPostalCode.length != 6 )
{
alert("Le champ du code postal doit avoir 6 caract�res.", objPostalCode);
objPCtext.value ="" ;
sblncheckError = false;
return false;
}
if( (letters.indexOf(strPostalCode.charAt(0)) < 0) ||
(letters.indexOf(strPostalCode.charAt(2)) < 0) ||
(letters.indexOf(strPostalCode.charAt(4)) < 0) )
{
alert("Le code postal doit respecter le format ANANAN o� A repr�sente une lettre et N un nombre.", objPostalCode);
objPCtext.value ="" ;
sblncheckError = false;
return false;
}
else if( (digits.indexOf(strPostalCode.charAt(1)) < 0) ||
(digits.indexOf(strPostalCode.charAt(3)) < 0) ||
(digits.indexOf(strPostalCode.charAt(5)) < 0) )
{
alert("Le code postal doit respecter le format ANANAN o� A repr�sente une lettre et N un nombre.", objPostalCode);
objPCtext.value ="" ;
sblncheckError = false;
return false;
}
//valid postal code
objPCtext2.value = strPostalCode;
sblncheckError = true;
return true;
}
Après que David m'ait envoyé la page, je suis allé par curiosité sur le site. Et bien je dois dire que je n'ai pas été déçu du voyage. On tombe sur de jolis spécimens avec des commentaires du style :
/************* DO NOT ALTER ANYTHING BELOW THIS LINE ! **************/
Je vous invite donc chaleureusement à partir en "Safari WTF", il y en a beaucoup d'autres ! N'hésitez pas à montrer vos trophées de chasse dans les commentaires mais faites attention car certains codes sauvages sont vraiment très très dangereux ...
| « QuelleEstLaTailleDeMaStackTRI(T) | GetDroitUtilisateur(T) » |