existe-t-il une syntaxe pour interdire un caractère spécifique dans une zone de texte ? Dans mon cas, je souhaiterai éviter que les répondants ne mettent un espace en fin de chaine.
Plus précisément, s'agissant d'entrer un prénom, je souhaiterai que les répondants soient forcés à utiliser la syntaxe suivante :
- 1ère lettre en majuscule
- suite en lettre minuscule, espace et tiret autorisés
- éviter que les répondants n'insèrent pas mégarde un espace en fin de chaine
Pour l'espace en fin de chaine : trim(self.NAOK) == self.NAOK .
On a pas déjà fait la regexp pour le reste ? Mais dans la regexp on accepte les espace, c'est ça ?
Si oui : tu peux mettre les 2 tests avec un and entre les 2.
Assistance on LimeSurvey forum and LimeSurvey core development are on my free time.
I'm not a LimeSurvey GmbH member. -
Professional support
-
Plugins, theme and development
. I don't answer to private message.
Pour la 1ère lettre en majuscule j'ai ucwords(ID_prenom.NAOK) == ID_prenom.NAOK
En revanche, je n'ai rien qui permette de n'autoriser que les minuscules pour les autres caractères.
J'utilise la syntaxe suivante pour forcer des majuscules dans le NOM : regexMatch("/^[A-Z ]*$/", ID_NOM)
Mais le probème est qu'en utilisant regexMatch("/^[a-z ]*$/", ID_prenom), l'ucwords ne fonctionne plus
Je ne suis d'ailleurs pas sûr d'utiliser correctement ces fonctions.
En mettant l'ucwords dans l'équation de validation de question, je parviens à forcer les répondants à mettre une majuscule au début.
En revanche, si je mets le trim, cela ne fonctionne pas. Est-ce que j'utilise bien ces fonctions ?
regexMatch("/^[A-Z].[a-z\- ]*$/", ID_NOM.NAOK) and trim(ID_NOM.NAOK) == ID_NOM.NAOK
Assistance on LimeSurvey forum and LimeSurvey core development are on my free time.
I'm not a LimeSurvey GmbH member. -
Professional support
-
Plugins, theme and development
. I don't answer to private message.
Cela fonctionne presque. Mon seul problème est que cela bloque dans le cas de nom composé ou multiple.
Par exemple, je peux écrire 'Jean-pierre' mais pas 'Jean-Pierre' ou 'Alexandre junior' mais pas 'Alexandre Junior', ce que la fonction ucwords permettait en revanche (mais ne bloquait pas en minuscule).
ucwords(ID_NOM.NAOK) == ID_NOM.NAOK and trim(ID_NOM.NAOK) == ID_NOM.NAOK
?
Ou meme mieux :
Code:
(regexMatch("/^[A-Z].[a-z\- ]*$/", ID_NOM.NAOK) or ucwords(ID_NOM.NAOK) == ID_NOM.NAOK) and trim(ID_NOM.NAOK) == ID_NOM.NAOK
Assistance on LimeSurvey forum and LimeSurvey core development are on my free time.
I'm not a LimeSurvey GmbH member. -
Professional support
-
Plugins, theme and development
. I don't answer to private message.
Option 1 : Avec seulement la condition ucwords, je ne peux pas obliger mon utilisateur à ne mettre que des minuscules (sauf 1ère lettre).
Option 2 : Le problème est qu'avec la condition 'or', si l'utilisateur met une majuscule à la 1ère lettre, il respecte donc bien la regle ucwords donc le regexMatch devient caduque et il peut alors continuer à entrer des lettres majuscules
(regexMatch("/^[A-Z].[a-z\- ]*$/", ID_NOM.NAOK) or ucwords(strtolower(ID_NOM.NAOK)) == ID_NOM.NAOK) and trim(ID_NOM.NAOK) == ID_NOM.NAOK
ucwords(strtolower(ID_NOM.NAOK)) : passe en minuscule puis passe les première lettres en majuscule.
Mais bon, tous ça n'est pas réellement lié à LimeSurvey …
Assistance on LimeSurvey forum and LimeSurvey core development are on my free time.
I'm not a LimeSurvey GmbH member. -
Professional support
-
Plugins, theme and development
. I don't answer to private message.
Bon en même temps, là tu empêche les Jean pierre Paul …
Sinon : même remarque que pour le téléphone : tu peux très bien laisser les personnes écrirent ce qu'elle veule et recalculer ensuite.
Ca serait un truc du genre : question Equation trim(ucwords(strtolower(ID_NOM.NAOK)))
Assistance on LimeSurvey forum and LimeSurvey core development are on my free time.
I'm not a LimeSurvey GmbH member. -
Professional support
-
Plugins, theme and development
. I don't answer to private message.