Sélecteur de date avec ExtJS, le retour

Sélecteur de date inline avec ExtJS

Il y a quelque temps, j'avais écrit un article qui expliquait comment ajouter des sélecteurs de date avec ExtJS à des balises input.

Cette technique peut cependant poser problème avec certaines mises en page. En effet, les balises input sont des éléments inline alors que les champs ExtJS sont encapsulés dans une balise div qui est un élément de type block.

En clair, la transformation entraine un retour à la ligne (sauf si on est dans un tableau).

Pour contourner ce problème, j'ai surchargé la méthode onRender de Ext.form.DateField pour qu'elle génère du code HTML plus simple (une simple balise img) et qui reste inline.

Wiip.DateField = Ext.extend(Ext.form.DateField,{
    onFocus: Ext.emptyFn,
    onRender: function(){
        this.trigger = Ext.DomHelper.insertAfter(this.el, {
            tag: "img",
            alt: "Calendrier",
            height: "16",
            src:"/images/date.png",
            style: "cursor: pointer; padding-left: 2px; vertical-align: text-top",
            title: "Calendrier",
            width: "16"
        }, true);
        this.trigger.on("click", this.onTriggerClick, this, {preventDefault:true});
    }
});

Au passage, j'ai également désactivé la mise en surbrillance du champ lorsqu'il reçoit le focus parce que ça posait quelques problèmes.

Vous pouvez utliser le code suivant pour l'appliquer à tous les champs associés à une classe CSS date.

Ext.select('input.date', true).each(function(elt) {
    new Wiip.DateField({
        applyTo: elt.dom,
        id: elt.dom.id
    });
});

Vous noterez qu'il vous faut une image de 16 pixels de coté (ici /images/date.png) pour servir de trigger.

Poster un nouveau commentaire

Le contenu de ce champ ne sera pas montré publiquement. If you have a Gravatar account associated with the e-mail address you provide, it will be used to display your avatar.
  • Les adresses de pages web et de messagerie électronique sont transformées en liens automatiquement.
  • Allowed HTML tags: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Les lignes et les paragraphes vont à la ligne automatiquement.
  • You can enable syntax highlighting of source code with the following tags: <code>, <php>.

Plus d'informations sur les options de formatage

CAPTCHA
La vérification ne tient pas compte des minuscules ou des majuscules.
Image CAPTCHA
Enter the characters shown in the image.