IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Faire un effet "placeholder" en XHTML1.0


Sujet :

JavaScript

  1. #1
    Invité
    Invité(e)
    Par défaut Faire un effet "placeholder" en XHTML1.0
    Bonjour,

    Je sollicite l'aide de la communauté ne parvenant pas à trouver la solution à un problème ;

    Contexte :
    Je travaille à l'amélioration d'une application web en JEE conçu avec Struts.
    Le front est donc composé de page JSP dans lequel je travail avec de l'HTML1.0
    Je précise que je suis débutant et travail sur Eclipse !

    Objectif :
    Mettre un jour un textarea existant en proposant un text indicatif qui s'efface pour laisser l'utilisateur saisir ses infos (= placeholder sous HTML5)

    Méthodes testé
    L'appli étant en HTML1.0, j'ai contourné le problème par un script javascript pour effacer la "value" au clic de l'utilisateur ! Ce qui marche très bien jusqu'au submit du formulaire ou la page se raffraichi, que les données sont bien écrites dans la base mais que ma value reste au lieu de laisser place au texte de la base de donnée... (cf code ci dessous)

    -------------------------------------------

    // CODE JAVASCRIPT //
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    function clearContents(element) {
    	  element.value = '';
    	}

    CODE DANS LA PAGE
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <html:textarea onfocus="clearContents(this);" property="commentaireLibre" styleClass="champXXXXXXXLG" cols="50" rows="5" onkeyup="limite(this,'2048', 'max_desc');" onkeydown="limite(this,'2048', 'max_desc');" value="test"/>
    Voilà ma demande est simple, je souhaite faire un placeholder sur un textarea en HTML1.0, j'ai cherché du côté du javascript pour contourner le problème... sans succès si quelqu'un à une idée, je suis preneur !

    Merci d'avance à tout ceux qui prendron,t le temps de répondre
    Dernière modification par NoSmoking ; 17/06/2014 à 18h24. Motif: (MP)Merci d'utiliser les balises [code] (bouton '#') de l'éditeur.

  2. #2
    Membre expert
    Avatar de Muchos
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2011
    Messages
    1 704
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Décembre 2011
    Messages : 1 704
    Points : 3 861
    Points
    3 861
    Billets dans le blog
    6
    Par défaut
    L'appli étant en HTML1.0
    Vous voulez dire XHTML 1.0, non?

    Comme réponse : pourquoi ne pas passer en HTML5? Il suffit de changer le DOCTYPE et d'utiliser l'attribut placeholder

    EDIT:

    L'attribut placeholder avec un doctype XHTML Strict semble valide, et fonctionne chez moi (Firefox 20)
    Néanmoins, je rappelle que c'est un attribut qui peut largement être contourné; avec un label explicite par ex.

  3. #3
    Invité
    Invité(e)
    Par défaut Struts 1 et le HTML5
    Merci pour la réponse, oui XHTML 1.0 pardon !
    C'est ce que j'avais commencé à faire, en changeant le Doctype pour passer les pages en HTML5 mais ma version de Struts semble ne pas supporter le HTML5...

  4. #4
    Invité
    Invité(e)
    Par défaut
    Je relance le sujet car ayant été déplacé dans une autre rubrique et continuant à chercher une solution à mon problème !
    Mon idée est de travailler autour d'une solution en Javascript pour mimer un placeholder ; les technologies en place ne permettant pas l'utilisation de balises HTML5 !
    Je suis déjà parvenu à une solution (presque) satisfaisante puisque le traitement voulu fonctionne à part que mon textarea reste vide au chargement initial de la page !
    Je cherche maintenant à faire une fonction lancée sur le <body onload="fonction()" qui au lancement de la page afficherait le texte "Entrez votre texte ici" si le textarea est vide...

    Voici le code déjà écrit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    <html:textarea onfocus="if (this.value==message) this.value=''" property="commentaireLibre" styleClass="champXXXXXXXLG" cols="50" rows="5" onkeyup="limite(this,'2048', 'max_desc');" onkeydown="limite(this,'2048', 'max_desc');">
     
     
    <script type="text/javascript">
     
    	//<![CDATA[
    		var message = "Entrez votre texte ici";
    	//]]>
     
    </script>
    Merci par avance pour votre aide,

  5. #5
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Tu confonds deux choses pourtant différentes.

    La version de HTML que tu utilises ne sert que pour la validation. Les fonctionnalités disponibles en HTML dépendent de la version du navigateur utilisée et non de celle de HTML.

    Bref, si ton navigateur supporte placeholder, alors tu peux utiliser cet attribut quelle que soit la version de HTML. Le seul truc, c'est que ta page ne sera pas valide, mais cela n'empêche en rien un site de fonctionner.

  6. #6
    Invité
    Invité(e)
    Par défaut
    Je ne travaille pas avec des pages HTML pures mais j'utilise le Framework Struts et travaille avec des page JSP qui lui utilisent des balises (Taglib) pour écrire en XHTML1.0 dans les pages. ces balises du type <html:textarea> sont très restrictives et n'autorisent pas tous les attributs ;dans le cas du placeholder, (même si je suis d'accord avec toi que tout se passe au niveau du navigateur), l'attribut est rejeté et génère une erreur de compilation... d'où ma recherche d'une solution alternative du côté du javascript... sinon il est évident qu'en deux clic j'aurais changé le doctype pour passer en HTML5 et le tour était joué... ;-)

  7. #7
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Mettre à jour Struts ne serait-il pas envisageable / souhaitable ?

    Sinon
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <input onfocus="if(this.value == this.defaultValue){this.value=''}" onblur="if(this.value == ''){this.value = this.defaultValue}" />

+ Répondre à la discussion
Cette discussion est résolue.

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo