Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > JavaScript
JavaScript Forum programmation JavaScript. Lire : Cours JavaScript, FAQ JavaScript, Toutes les FAQ JavaScript et Sources JavaScript
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 20/09/2011, 09h27   #1
Candidat au titre de Membre du Club
 
Inscription : mars 2007
Messages : 33
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 33
Points : 12
Points : 12
Par défaut input : hover, focus, largeur dynamique pas génial

Bonjour,

Je cherche à obtenir un comportement spécifique pour les champs input de mes formulaires :
  • avoir une couleur de fond identique au contexte (une cellule de tableau qui le contient).
  • avoir un fond gris au survol pour montrer que c'est un champ éditable (il y a des inputs non éditable dans mon formulaire).
  • avoir un fond blanc quand on saisie du texte dedans.
  • avoir une largeur qui s'adapte au texte.

J'ai plus ou moins réussi en javascript pur avec dans mon css :
Code :
1
2
input:not([readonly]):focus{background-color: #fff}
input:not([readonly]):hover{background-color: #ddd}
mais ça ne fonctionne pas sous IE9, et il serait mieux que je capture la couleur initiale et que je change ensuite avec du js.

+ un script javascript adapté d'un code donné ici (merci à son auteur) pour faire varier la largeur à la saisie avec onkeyup="adapterLargeur(this); dans le html, mais aussi pour adapter la largeur au chargement de la page :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
 
 
function adapterLargeur(elemt){
/*
 *  Adapte la largeur des INPUTs au texte inscrit dedans
 */	
	var ndfontsize, ndfontfamily, ndfontstyle, ndfontweight;
	var tt = elemt.value;
	//
	document.styleSheets[1].cssRules : document.styleSheets[1].imports;
	// lecture des propriétés du texte
	var sheet=document.styleSheets[1];
	if ('cssText' in sheet) {   // Internet Explorer
		ndfontsize = elemt.currentStyle.fontSize;
		ndfontfamily = elemt.currentStyle.fontFamily;
		ndfontstyle = elemt.currentStyle.fontStyle;
		ndfontweight = elemt.currentStyle.fontWeight;
	}
	else {  // Firefox, Opera, Google Chrome and Safari
		ndfontsize = getComputedStyle(elemt, null).fontSize;
		ndfontfamily = getComputedStyle(elemt, null).fontFamily;
		ndfontstyle = getComputedStyle(elemt, null).fontStyle;
		ndfontweight = getComputedStyle(elemt, null).fontWeight;
	}
//
	// Création puis destruction d'un DIV avec les même caractéristiques pour en connaître la longueur en pixel
	var container=document.createElement("div");
	container.style.visibility="hidden";
	container.style.fontFamily=ndfontfamily
	container.style.fontSize=ndfontsize
	container.style.fontStyle=ndfontstyle
	container.style.fontWeight=ndfontweight
	container.id="magicdiv";
	container.style.display="inline";
	document.body.appendChild(container);
	document.getElementById("magicdiv").innerHTML=tt;
	var longueur = document.getElementById("magicdiv").offsetWidth;
	document.getElementById('magicdiv').parentNode.removeChild(document.getElementById('magicdiv'));
//	
	// Fixation de la longueur du champ input
 	elemt.style.width=(longueur+5)+"px";
}
Mais voilà, ça ne fonctionne pas bien avec tout les navigateurs. J'ai commencé à regarder en jquery (mais pour l'instant je ne maîtrise pas).
Auriez vous une idée de quelque chose de plus élégant et qui fonctionne avec tout les navigateurs ? même en jquery à titre pédagogique...

Si tout pouvez être en js ça serait plus clair notamment, car là, j'ai un bout dans le html, le css, le js...
berlo44 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/09/2011, 09h29   #2
Rédacteur/Modérateur
 
Avatar de SpaceFrog
 
Homme
Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Inscription : mars 2002
Messages : 30 040
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Royaume-Uni

Informations professionnelles :
Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Secteur : Industrie

Informations forums :
Inscription : mars 2002
Messages : 30 040
Points : 45 141
Points : 45 141
le hover n'est crossbrowser que pour la balise a

il existe des patch htc genre whateverhover...
sinon en effet jquery (c'est pas si compliqué )
il y a tous les tutos nécessaires sur developpez. ..
__________________
Ma page Developpez
Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
Votre post est résolu ? Alors n'oubliez pas le Tag


réalisations :www.planet-languages.com|www.saftair.com| www.ouestisol.fr | www.sebemex.fr | www.extramiante.fr | www.sistac-alizay.fr | www.acoustishop.fr | www.litt.fr | www.ouestventil.fr
SpaceFrog est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 03h29.


 
 
 
 
Partenaires

Hébergement Web