Page 1 sur 1

Validation d'un champ mail

Publié : 22 août 2019, 11:48
par ffp17
Bonjour,

J'utilise un virtuel pour permettre la saisie d'une adresse mail. Je souhaiterais faire une validation du format de l'adresse mail (par regex par exemple) avant de l'enregistrer.
Voilà le rendu du widget :
Capture d’écran 2019-08-22 à 11.46.07.png
Capture d’écran 2019-08-22 à 11.46.07.png (19.48 Kio) Consulté 1683 fois
Et voilà le code utilisé :

Code : Tout sélectionner

<div class="cmd cmd-widget reportModeHidden" data-type="action" data-subtype="message" data-cmd_id="#id#" data-cmd_uid="#uid#" data-version="#version#" data-eqLogic_id="#eqLogic_id#" style="width: 200px;">
<input type="text" class="form-control input-sm message" data-cmd_uid="#uid#" data-cmd_id="#id#" step="300" value="#state#">
<center><a class='btn btn-success btn-xs execute cmdName'>#valueName#</a></center>
<script>
$('.cmd[data-cmd_uid=#uid#]:last .execute').on('click', function() {
jeedom.cmd.execute({id: '#id#', value: {message: $('.cmd[data-cmd_uid=#uid#] .message').value()}});
});
</script>
</div>
Avez-vous une idée de comment je peux m'y prendre ?
Merci et bonne journée,

Re: Validation d'un champ mail

Publié : 22 août 2019, 14:28
par Mips2648
Salut,

https://www.google.com/search?q=validation+email+regex

et donc tu peux faire une action sur valeur dans ton virtuel qui execute un scénario qui valide l'email

Re: Validation d'un champ mail

Publié : 22 août 2019, 15:24
par ffp17
Bonjour Mips2648,

Merci de ta réponse.
Je pense que je n'ai pas été assez précis. En cas de format d'email erroné j'aurais souhaité avoir le retour d'erreur immédiatement dans le widget.
Par exemple afficher "email non valide".
Je ne suis pas sûr qu'en passant par scénario externe j'arrive au résultat voulu. Je pourrai bloquer l'enregistrement mais faire un retour sur le widget de saisie ça va être plus compliqué.

Re: Validation d'un champ mail

Publié : 22 août 2019, 15:43
par Mips2648
ton virtuel peut avoir une info "message", vide au départ,
quand c'est valider, le scénario met à jour l'info avec ''succès" ou "email invalide" pendant x secondes et ensuite efface de nouveau l'info message?

Re: Validation d'un champ mail

Publié : 22 août 2019, 15:57
par winhex
ffp17 a écrit :
22 août 2019, 15:24
Bonjour Mips2648,

Merci de ta réponse.
Je pense que je n'ai pas été assez précis. En cas de format d'email erroné j'aurais souhaité avoir le retour d'erreur immédiatement dans le widget.
Par exemple afficher "email non valide".
Je ne suis pas sûr qu'en passant par scénario externe j'arrive au résultat voulu. Je pourrai bloquer l'enregistrement mais faire un retour sur le widget de saisie ça va être plus compliqué.
bonjour
la fonction input mail existe
https://www.w3schools.com/tags/att_input_type_email.asp
ps tu peux enlevé step 300 qui ne te sert à rien avec du texte

Re: Validation d'un champ mail

Publié : 22 août 2019, 16:01
par Mips2648
un champ d'input dans une page web ne permet pas de valider son contenu server side...

Re: Validation d'un champ mail

Publié : 22 août 2019, 16:12
par winhex
En cas de format d'email erroné

il est question de verification de format avant validation .
regarde le code
le bt <A> exécute il peut avant son exec être verifier
d'où le format input mail existant

enfin pour moi c'est son utilité ou alors j'ai rien compris
mais dans le code une simple verification
if
state contient @ = ok et exécution
sinon pop up d'erreur

il y a même moyen d'une liste avec des emails utilisé souvent voir même d'une suggestion

Re: Validation d'un champ mail

Publié : 22 août 2019, 18:03
par ffp17
Merci de vos retours.
Bon j'ai essayé ça mais cela ne fonctionne pas. Je peux saisir un mail au mauvais format.

Code : Tout sélectionner

<div class="cmd cmd-widget reportModeHidden" data-type="action" data-subtype="message" data-cmd_id="#id#" data-cmd_uid="#uid#" data-version="#version#" data-eqLogic_id="#eqLogic_id#" style="width: 200px;">
<input type="mail" class="form-control input-sm message" data-cmd_uid="#uid#" data-cmd_id="#id#" value="#state#">
<center><a class='btn btn-success btn-xs execute cmdName'>#valueName#</a></center>
<script>
$('.cmd[data-cmd_uid=#uid#]:last .execute').on('click', function() {
jeedom.cmd.execute({id: '#id#', value: {message: $('.cmd[data-cmd_uid=#uid#] .message').value()}});
});
</script>
</div>
J'essaye de regarde comment je mets en oeuvre le if.
Et j'ai enlevé le step 300, merci @winhex

Re: Validation d'un champ mail

Publié : 22 août 2019, 18:19
par Poumi
Tu peux peut être essayer de le gérer dans les champs de formule de calcul de la valeur.

En gros: c’est un truc du genre ( test de #value#)?valeur vrai;valeur faux

Donc ça donnerait (ton test que #value# est un mail)?#value#; "valeur incorrecte"

Et du coup si c’est pas bon ça écrit valeur incorrecte dans la valeur.

Par contre je suis pas sûr de la syntaxe (surtout du ; ) parceque je te dis ça de tête...

Re: Validation d'un champ mail

Publié : 22 août 2019, 18:27
par ffp17
Alors j'ai essayé ça et c'est toujours pas bon :

Code : Tout sélectionner

<div class="cmd cmd-widget reportModeHidden" data-type="action" data-subtype="message" data-cmd_id="#id#" data-cmd_uid="#uid#" data-version="#version#" data-eqLogic_id="#eqLogic_id#" style="width: 200px;">
<input type="email" class="form-control input-sm message" data-cmd_uid="#uid#" data-cmd_id="#id#" value="#state#" required placeholder="mail@mail.fr" pattern=".+@test.com">
<center><a class='btn btn-success btn-xs execute cmdName'>#valueName#</a></center>
<script>
$('.cmd[data-cmd_uid=#uid#]:last .execute').on('click', function() {
jeedom.cmd.execute({id: '#id#', value: {message: $('.cmd[data-cmd_uid=#uid#] .message').value()}});
});
</script>
</div>
@Poumi, merci je vais aussi regarder ce que tu proposes, par contre cela va enregistrer le "valeur incorrecte" dans le mail.

Re: Validation d'un champ mail

Publié : 22 août 2019, 18:33
par Poumi
Ou alors si pas bon tu le vide et tu gère dans le widget que si vide tu écris quelquepart « veuillez saisir une adresse mail valide »

Re: Validation d'un champ mail

Publié : 23 août 2019, 12:24
par ffp17
Après revérification, la validation du champ mail en html fonctionne bien.
Si je saisie une erreur, la valeur n'est pas enregistrée mais elle s'affiche quand même sur le widget.
Voilà le code actuel :

Code : Tout sélectionner

<div class="cmd cmd-widget reportModeHidden" data-type="action" data-subtype="message" data-cmd_id="#id#" data-cmd_uid="#uid#" data-version="#version#" data-eqLogic_id="#eqLogic_id#" style="width: 200px;">
<input type="email" pattern="/^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$/" required class="form-control input-sm message" data-cmd_uid="#uid#" data-cmd_id="#id#" value="#state#">
<center><a class='btn btn-success btn-xs execute cmdName'>#valueName#</a></center>
<script>
$('.cmd[data-cmd_uid=#uid#]:last .execute').on('click', function() {
jeedom.cmd.execute({id: '#id#', value: {message: $('.cmd[data-cmd_uid=#uid#] .message').value()}});
});
</script>
</div>
Je pense que ça doit être jouable en js mais là ça va être compliqué pour moi :)

Re: Validation d'un champ mail

Publié : 23 août 2019, 16:13
par winhex
ajjoute required pattern
exemple
http://jsfiddle.net/du676/56/
trouver là avec d'autres methodes
https://stackoverflow.com/questions/250 ... ing-jquery

pour tes futurs recherche et apprentissage
on est pas formé mais avec notre ami google on trouve : jquery email validate
au fur et à mesure tu arriveras â decoder les solutions

ps ne me demande pas à quoi correspond se qu'il y a dans le required pattern
"[^@]+@[^@]+\.[a-zA-Z]{2,6}"
je suis comme toi :D