lundi 26 janvier 2009

Les créatures de Joshua Allen Harris

Une petite vidéo sur cet artiste écologique :

lundi 19 janvier 2009

[javascript] Afficher un message d'erreur si le textarea est trop long

Il s'agit de limiter le nombre de caractères d'un textarea avant l'envoi du formulaire. Lorsque la limite est dépassée, un message d'erreur apparaît, comme celui-ci :


Pour cela nous allons utiliser un javascript, à placer dans le head de la page ou dans un fichier qu'on appellera ensuite dans le même head :
function textLimit(field, maxlen) {
if (field.value.length > maxlen) {
field.value = field.value.substring(0, maxlen);
alert('Votre message est trop long ! Merci d\'être plus concis.');
}
}


Et puis dans le textarea concerné, on ajoutera onkeyup="textLimit(this, XX);", XX étant le nombre de caractères autorisé, espaces compris.

Dans un formulaire Spip, où le textarea n'est pas dans la page forum.html par exemple, on ajoutera à la balise #TEXTE le filtre :
|inserer_attribut{onkeyup,'textLimit(this, XX);'}

J'ai trouvé ce script ici et ici.

lundi 12 janvier 2009

Tous les caractères que notre clavier nous cache

Si un jour quelqu'un invente un clavier où l'on peut trouver un É sans devoir taper "Alt + 0201", et ainsi devoir apprendre par cœur tout un tas d'astuces pour combler l'incompétence de tous les claviers du monde, alors cette personne-là sera riche !! En attendant, voilà quelques combinaisons utiles (je ne sais pas si ça marche avec Mac) :

ÀAlt + 0192ÁAlt + 0193ÂAlt + 0194ÃAlt + 0195ÄAlt + 0196ÅAlt + 0197áAlt + 0225
ÇAlt + 0199ÈAlt + 0200ÉAlt + 0201ÊAlt + 0202ËAlt + 0203ÑAlt + 0209ñAlt + 0241
ÌAlt + 0204ÍAlt + 0205ÎAlt + 0206ÏAlt + 0207ìAlt + 0236íAlt + 0237  
ÒAlt + 0210ÓAlt + 0211ÔAlt + 0212ÕAlt + 0213ÖAlt + 0214òAlt + 0242óAlt + 0243
ÙAlt + 0217ÚAlt + 0218ÛAlt + 0219ÜAlt + 0220ùAlt + 0249úAlt + 0250  
œAlt + 0156ŒAlt + 0140          
«Alt + 0187»Alt + 0187©Alt + 0169¡Alt + 0161¿Alt + 0191    
¹Alt + 0185²Alt + 0178³Alt + 0179¼Alt + 0188½Alt + 0189¾Alt + 0190Alt + 0137


Et dans la table des caractères nous donne bien plus !!

lundi 5 janvier 2009

[javascript] Tri dynamique d'un tableau HTML

Nous entendons par tri dynamique l'action de pouvoir trier le tableau en cliquant sur l'en-tête des colonnes, et ceci sur plusieurs colonnes, par ordre croissant ou décroissant. C'est tout bête, ça prend deux minutes à installer :
- transférer les images (à la racine du site) et les deux fichiers .js sur le serveur
- faire le lien vers eux dans l'en-tête de la page où se trouve le tableau :
<script type="text/javascript" src="/squelettes/javascript/prototype.js"></script>
<script type="text/javascript" src="/squelettes/javascript/sortHTMLTable.js"></script>

- donner une id au tableau en question, par exemple "tri" :
<table id="igm"
- à la fin de la page HTML, après le tableau par exemple, placer l'appel au tri :
<script type="text/javascript"> new sortHTMLTable( 'tri' ); </script>
- admirer le résultat !

Et régler tous les soucis de présentation avec les CSS et l'id tri.

Petit bémol : ça marche partout, sauf dans IE6... mais le tableau s'affiche quand même, sans erreur. Vous pouvez voir un résultat ici.

La source est ici.

jeudi 1 janvier 2009

[flex] Remplir un DataGrid à partir d'une liste

1. Soit une ArrayCollection nommée "maCollec" dont les valeurs ressemblent à ça :
<mx:Object az="1" nom="Afghanistan" region="ASIE PACIFIQUE" classement="161" resultat="51,08" ips="65,53" iedd="63,84" iddh="46,12" devdur="51,04" devhumain="28,89" />
<mx:Object az="2" nom="Afrique du sud" region="AFRIQUE" classement="124" resultat="59,27" ips="73,85" iedd="31,48" iddh="75,79" devdur="63,02" devhumain="52,22" />


2. Soit une liste qui affiche uniquement l'attribut "pays" de l'ArrayCollection (notez la présence de click):
<mx:List id="liste" dataProvider="{maCollec}" labelField="nom" click="onSelect()" />

3. Soit un DataGrid classique, d'une ligne : lorsque je clique sur un item de la liste, je veux que les valeurs de cet item s'affichent dans la ligne du DataGrid. La fonction pour que la magie opère :
//fonction pour afficher les données d'un pays sélectionné dans la liste
private function onSelect():void {
var selectedItem : Object = liste.selectedItem;
resultats.dataProvider = selectedItem; }