Forcer la majuscule....

  • Créateur du sujet Créateur du sujet Halbert
  • Date de début Date de début
A

Anonyme

Invité
Bonjour

Fatigué que mes élèves rentrent leur nom sans majuscule à la première lettre, je pensais avoir trouvé la solution avec, dans le formulaire:

<label for="nom"> Nom : </label>
<input type="text" style="text-transform:capitalize" name="nom" size="40" id="nom" /> <br />

Mais à la page suivante, à l'ouverture de la session, la variable nom prend la valeur entrée par l'utilisateur et non la valeur modifiée par "text-transform:capitalize"

Une solution, écrire dans toutes les pages liées à la session :
<?php $nom==$_SESSION['nom'];
$prenom==$_SESSION['prenom'];
$classe==$_SESSION['classe'];
$password==$_SESSION['password'];
$nom = ucfirst(strtolower($nom));
$prenom = ucfirst(strtolower($prenom));

?>

D'où ma question : y aurait-il un moyen de modifier la variable nom dès le formulaire ?
Un utilisateur rentre "dupont" et la variable prend la valeur "Dupont" ?

merci et bonne soirée

Albert
 
Tu as une methode toUpperCase en javascript sur les chaînes de caractères. Donc il suffit de l'appliquer sur la première lettre du champ de texte sur les événements onchange ou onkeypress..

Merci, j'essaye
Albert

---------- Nouveau message ajouté à 22h47 ---------- Le message précédent a été envoyé à 22h14 ----------

Tu as une methode toUpperCase en javascript sur les chaînes de caractères. Donc il suffit de l'appliquer sur la première lettre du champ de texte sur les événements onchange ou onkeypress..

J'ai écrit ceci :

<label for="nom"> Nom : </label>
<input type="text" name="nom" size="40" onkeyup='javascript:this.value=this.value.toUpperCase();' id="nom" /> <br />

et ça marche, merci.
Connais-tu une fonction qui met la première lettre en majuscule et les suivantes en minuscules ?

Albert
 
this.value[0].toUpperCase()+this.value.substring(1,this.value.length) ? (pas sur du tout des paramètres, y'a 50 substring en js, je retiens jamais lequel fonctionne comment).

Bon faut sans doute écrire qqch de plus évolué pour checker qu'il y a au moins 1 caractère.
 
this.value[0].toUpperCase()+this.value.substring(1,this.value.length) ? (pas sur du tout des paramètres, y'a 50 substring en js, je retiens jamais lequel fonctionne comment).

Bon faut sans doute écrire qqch de plus évolué pour checker qu'il y a au moins 1 caractère.
Merci j'essaye demain. Dans la pratique peu de gens ont des noms d'une lettre ! Donc ça ira
Merci bonne nuit
Albert
 
Oui mais comme tu déclenches sur le keyup, il y aura bien un moment où il y aura un ou deux caractères, surtout si quelqu'un se trompe et appuie sur la touche effacer. Donc il faut le prendre en compte, et vérifie sous plusieurs navigateurs aussi, les événements claviers il me semble que c'est pas forcément récupéré de la même façon.
 
this.value[0].toUpperCase()+this.value.substring(1,this.value.length) ? (pas sur du tout des paramètres, y'a 50 substring en js, je retiens jamais lequel fonctionne comment).

Bon faut sans doute écrire qqch de plus évolué pour checker qu'il y a au moins 1 caractère.

Bonjour.
Après avoir écrit

<label for="nom"> Nom : </label>
<input type="text" name="nom" size="40" onkeyup='javascript:this.value=this.value[0].toUpperCase()+this.value.substring(1,length).toLowerCase();' /> <br />

curieusement je me retrouve limité à 8 caractères : par quel mystère ?
Merci

Albert
 
this.value.length à priori. ;)
Précise le navigateur aussi quand t'as ce genre de soucis.
Il y en a certains qui ont un peu plus de mal (genre je viens de me passer la journée à trouver des contournements hyper tordus à une demi-douzaine de gros bugs ie7&#8230;)
 
Salut
Et en remplacement :
substring(1,length)....

par :
substring(1,this.length)......

?

Chez moi, ça corrige le problème :)

++

Bonjour
Ca marche sur Safari mais sur Opera, les conséquences sont curieuses : plus que deux caractères autorisés et que des consonnes !
Albert

---------- Nouveau message ajouté à 09h23 ---------- Le message précédent a été envoyé à 09h12 ----------

this.value.length à priori. ;)
Précise le navigateur aussi quand t'as ce genre de soucis.
Il y en a certains qui ont un peu plus de mal (genre je viens de me passer la journée à trouver des contournements hyper tordus à une demi-douzaine de gros bugs ie7…)

Bonjour

Ca marche avec safari, firefox opera.

Pour IE, je n'ai qu'un vieux IE pour mac et là ...c'est du délire !

Albert
 
Essaye ça :
Bloc de code:
<script language="JavaScript">
<!--
	function ucfirst(chaine){
		if(chaine.length == 1){
			return chaine.toUpperCase();
		}
		else if(chaine.length >= 1){
			return chaine.substring(0,1).toUpperCase()+chaine.substring(1,chaine.length).toLowerCase();
		}
		else{
			return "";
		}
	}
-->
</script>

	<input type="text" onkeyup="this.value=ucfirst(this.value);" />

ça a l'air de passer partout, juste firefox qu'est chiant parce qu'il recentre le champ de texte sur la gauche, donc on voit pas ce qu'on tape quand on sort du champ. IE aimait pas le chaine[0]

---------- Nouveau message ajouté à 12h56 ---------- Le message précédent a été envoyé à 12h55 ----------

c'est quoi le lien ?

Une version mac os x d'internet explorer 6. Il faut X11, c'est pas hyper stable, et il y a parfois quelques bugs, mais pour tester ce genre de choses ça suffit.
 
Essaye ça :
Bloc de code:
<script language="JavaScript">
<!--
	function ucfirst(chaine){
		if(chaine.length == 1){
			return chaine.toUpperCase();
		}
		else if(chaine.length >= 1){
			return chaine.substring(0,1).toUpperCase()+chaine.substring(1,chaine.length).toLowerCase();
		}
		else{
			return "";
		}
	}
-->
</script>

	<input type="text" onkeyup="this.value=ucfirst(this.value);" />

ça a l'air de passer partout, juste firefox qu'est chiant parce qu'il recentre le champ de texte sur la gauche, donc on voit pas ce qu'on tape quand on sort du champ. IE aimait pas le chaine[0]

---------- Nouveau message ajouté à 12h56 ---------- Le message précédent a été envoyé à 12h55 ----------



Une version mac os x d'internet explorer 6. Il faut X11, c'est pas hyper stable, et il y a parfois quelques bugs, mais pour tester ce genre de choses ça suffit.

merci je vais essayer
 
Essaye ça :
Bloc de code:
<script language="JavaScript">
<!--
	function ucfirst(chaine){
		if(chaine.length == 1){
			return chaine.toUpperCase();
		}
		else if(chaine.length >= 1){
			return chaine.substring(0,1).toUpperCase()+chaine.substring(1,chaine.length).toLowerCase();
		}
		else{
			return "";
		}
	}
-->
</script>

	<input type="text" onkeyup="this.value=ucfirst(this.value);" />

ça a l'air de passer partout, juste firefox qu'est chiant parce qu'il recentre le champ de texte sur la gauche, donc on voit pas ce qu'on tape quand on sort du champ. IE aimait pas le chaine[0]

---------- Nouveau message ajouté à 12h56 ---------- Le message précédent a été envoyé à 12h55 ----------



Une version mac os x d'internet explorer 6. Il faut X11, c'est pas hyper stable, et il y a parfois quelques bugs, mais pour tester ce genre de choses ça suffit.

Ca a l'air de marcher : merci.
Albert