Aide - Recherche - Membres - Calendrier
Version complète : changer couleur de champ texte dans un onBlur
Forum Développeur - Administration serveur, programmation et base de données > Programmation > Javascript et AJAX
mat10000
Bonjour à tous,

J'ai un champ qui contient un texte et une couleur par défaut.
Lorsque l'utilisateur clique sur ce champ afin d'y saisir un texte le texte par défaut disparaît
CODE
onFocus="if (this.value=='texte par défaut') {this.value='';}"


et je doit aussi changer la couleur de fond du champ.
Pour la couleur par défaut j'ai utilisé un style CSS.

Avez vous une petite idée ? faut il passer par PHP en mettant la couleur en variable ??

merci pour votre aide
ElMoustiko
tu peux utiliser la pseudo class :focus wink.gif

Sinon, pour ton code, je te conseille un truc qui externalise la source javascript dans ce gout là :
CODE


function fillInput() {

/*

 - partie onfocus

  permet de vider le champs lorsque la souris pointe dessus et si la valeur du champs correspond à l'attribut value.

 - partie onblur (cette partie ne fonctionne pas sous Internet Explorer)

  orsque la souris change de focus, rétablissement de la valeur de l'attribut value si le champs est vide.

*/



inputs = document.getElementsByTagName('input');

for (var i = 0; i < inputs.length; i++) {

 

 inputs[i].onfocus = function() {

  if (this.value == this.getAttribute('value')) {

   this.value = '';

  }

 }

 

 inputs[i].onblur = function() {

  if (this.value == '') {

   this.value = this.getAttribute('value');

  }

 }

}

}



window.onload = fillInput;



Tu peux ensuite ajouter le changement de couleur dans les fonctions pour Internet Explorer qui ne comprendra pas :focus

(coté HTML ça donne :
CODE


<input type="text" name="bla">


)
mat10000
oulalala j'ai même pas eu le temps de respirer que tu réponds déja smile.gif
merci bien je vais regarder ça de près.
mat10000
bon pour le moment je n'arrive qu'à changer le texte, comme avant. Il ne me reste plus qu'a trouver le moyen de changer la couleur.

Le problème apparemment c'est qu'un champ texte n'a pas d'attribut couleur. Il faut forcément passer par un style css. Il faudrait donc pouvoir changer le style css via javascript ??
ElMoustiko
Comme je te disais, avec la pseudo class :focus, tu peux le faire
CODE


input[text]:focus

{

tes couleurs;

}


Mais sous IE ça marchera pas.

Donc, il faut attaquer les styles via JS

CODE


     inputs[i].onblur = function() {

        if (this.value == '') {

           this.value = this.getAttribute('value');

           this.style.background = '#couleur';

        }

     }



Idem pour le .onfocus plus haut avec une autre couleur
mat10000
arrf autant pour moi , merci bien pour ton aide
Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'informations, la mise en page et les images, veuillez cliquer ici.
Invision Power Board © 2001-2009 Invision Power Services, Inc.