Ce Forum passera en lecture seule en janvier 2020
Image
Merci de vous rendre sur https://community.jeedom.com maintenant pour vos prochains postes ;)

Validation d'un champ mail

Réservé à l'utilisation et la création de widgets dans JEEDOM
Répondre
ffp17
Timide
Messages : 280
Inscription : 02 sept. 2016, 23:09
Localisation : 17

Validation d'un champ mail

Message par ffp17 » 22 août 2019, 11:48

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é 322 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,

Mips2648
Actif
Messages : 932
Inscription : 08 sept. 2018, 17:09

Re: Validation d'un champ mail

Message par Mips2648 » 22 août 2019, 14:28

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
Développeur et auteur des plugins suivants, (entre autre Arlo, Solaredge, Design Image, Gotify...) et aidant sur plein d'autres!

Si vous voulez contribuer, un don fait toujours plaisir : https://paypal.me/mips2648

ffp17
Timide
Messages : 280
Inscription : 02 sept. 2016, 23:09
Localisation : 17

Re: Validation d'un champ mail

Message par ffp17 » 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é.

Mips2648
Actif
Messages : 932
Inscription : 08 sept. 2018, 17:09

Re: Validation d'un champ mail

Message par Mips2648 » 22 août 2019, 15:43

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?
Développeur et auteur des plugins suivants, (entre autre Arlo, Solaredge, Design Image, Gotify...) et aidant sur plein d'autres!

Si vous voulez contribuer, un don fait toujours plaisir : https://paypal.me/mips2648

winhex
Actif
Messages : 3799
Inscription : 23 janv. 2015, 01:41

Re: Validation d'un champ mail

Message par winhex » 22 août 2019, 15:57

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

Mips2648
Actif
Messages : 932
Inscription : 08 sept. 2018, 17:09

Re: Validation d'un champ mail

Message par Mips2648 » 22 août 2019, 16:01

un champ d'input dans une page web ne permet pas de valider son contenu server side...
Développeur et auteur des plugins suivants, (entre autre Arlo, Solaredge, Design Image, Gotify...) et aidant sur plein d'autres!

Si vous voulez contribuer, un don fait toujours plaisir : https://paypal.me/mips2648

winhex
Actif
Messages : 3799
Inscription : 23 janv. 2015, 01:41

Re: Validation d'un champ mail

Message par winhex » 22 août 2019, 16:12

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

ffp17
Timide
Messages : 280
Inscription : 02 sept. 2016, 23:09
Localisation : 17

Re: Validation d'un champ mail

Message par ffp17 » 22 août 2019, 18:03

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

Avatar de l’utilisateur
Poumi
Actif
Messages : 660
Inscription : 21 mars 2019, 22:41

Re: Validation d'un champ mail

Message par Poumi » 22 août 2019, 18:19

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...

ffp17
Timide
Messages : 280
Inscription : 02 sept. 2016, 23:09
Localisation : 17

Re: Validation d'un champ mail

Message par ffp17 » 22 août 2019, 18:27

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.

Avatar de l’utilisateur
Poumi
Actif
Messages : 660
Inscription : 21 mars 2019, 22:41

Re: Validation d'un champ mail

Message par Poumi » 22 août 2019, 18:33

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 »

ffp17
Timide
Messages : 280
Inscription : 02 sept. 2016, 23:09
Localisation : 17

Re: Validation d'un champ mail

Message par ffp17 » 23 août 2019, 12:24

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 :)

winhex
Actif
Messages : 3799
Inscription : 23 janv. 2015, 01:41

Re: Validation d'un champ mail

Message par winhex » 23 août 2019, 16:13

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

Répondre

Revenir vers « [Plugin officiel] Widgets »

Qui est en ligne ?

Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 0 invité