1479 sujets

Web Mobile et responsive web design

Bonjour,

J'ai un champ de saisie dans une page HTML (input[type=submit]). Tout va dans le meilleur des mondes sur PC, mais en testant la page sur une tablette, je me suis rendu compte que la 1ère lettre passait automatiquement en majuscule, ce qui fausse a requête. Y-a-t'il une solution ?

Merci de votre écoute.
Modérateur
Bonjour,

Ho oui même plusieurs ! N'est-ce pas une bonne nouvelle que voilà ?!

Au choix, vous pouvez forcer la mise en minuscule côté client en Javascript ou côté serveur en Php (si vous utilisez php mais ce qui suit est faisable dans tous les langages de programmation) voire les deux.

En Javascript l'idée est la suivante:
* Récupérer dans une variables tous les champs concernés (getElementsByClassName par exemple)
* Surveiller tout changement intervenant dans ces inputs (addEventListener couplé à l'évènement keyup par exemple)
* Récupérer la valeur en cours
* modifier la casse (tout mettre en minuscule ou juste la première lettre)
* renvoyer la valeur modifiée au champs (monChamps.value)
Note : si vous préférez Jquery, la démarche reste la même.

En Php l'idée est à peu près la même:
* on récupère la donnée transmise qu'on charge dans une variable
* on modifie cette variable pour qu'elle soit (en entier ou juste la première lettre) en minuscule (strtolower)
* enfin, on a maintenant une variable propre avec laquelle faire joujoux.
Modérateur
Ha j'oubliais, si vous ne souhaitez pas modifier la casse vous même (j'entends par un script) vous pouvez aussi forcer l'utilisateur à le faire en ajoutant un pattern à votre champs input qui n'acceptera pas les majuscules.

Par exemple si vous ne souhaitez que des caractères alphanumériques et quelques séparateurs ceci donnerait un truc genre
<input pattern="[a-z0-9_-.]" required>

Notez que pour empêcher la validation, dès lors que vous mettez un pattern le champs doit-être impérativement requis.
Notez aussi qu'ici ne sont tolérés, en plus des caractères alphanumériques les tirets, underscores et points.
Greg, l'homme qui forume plus vite que son ombre...

Merci de vos réponses. Pourtant je n'ai encore rien codé parce que ça ne répond pas exactement à mon attente. Je me rends compte que je n'ai pas été assez précis dans mon post....
En fait, il faut que le visiteur ait le choix : rentrer une majuscule ou une minuscule, comme sur un clavier de PC. Les solutions proposées forcent toutes les entrées en minuscule.
Modérateur
A relire le sujet je m'aperçois que je n'avais pas prêté attention au fait qu'il s'agisse d'un type submit.

En ce cas, la seconde solution me semble tout à fait adaptée ; passer systématiquement la valeur en minuscule côté serveur.

Qu'en pensez-vous ?
Non non non ! le serveur doit réagir différemment selon qu'il s'agit par exemple de 'paris' (pluriel de pari) ou de Paris (la ville).
Modérateur
Smiley sweatdrop
Alors je ne comprends pas.

Le titre du sujet indique que vous ne souhaitez que des valeurs en minuscule et votre exemple semble exiger la distinction majuscule/minuscule.
Exact, j'ai tapé trop vite... Il s'agit en fait de forcer le système à respecter le choix de l'utilisateur : majuscule ou minuscule. Dans l'état actuel des choses, la première lettre est systématiquement mise en majuscule. La seule parade que j'ai trouvée, si on peut appeler ça comma ça, consiste à doubler cette première lettre, écrire le mot entier et ensuite effacer la première (ex. Ggrandeur puis en effaçant l'initiale, grandeur)...
Eh bien voilà ! Tous ensemble contre l'autocapitalize ! Je m'égare...
Un grand merci à Greg_Luière et à MatthieuR.