PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WEBDEV 2024 → Simuler la touche Tab en appuyant sur entree dans un champ de saisie
Simuler la touche Tab en appuyant sur entree dans un champ de saisie
Débuté par Dada87, 30 juin 2015 16:48 - 5 réponses
Membre enregistré
16 messages
Posté le 30 juin 2015 - 16:48
Bonjour,

J'ai un formulaire WebDev que j'aimerais remplir rapidement plusieurs fois de suite, c'est pour ceci que je voudrais passer au champ de saisie suivant avec la touche "Enter".

1. J'ai essayé d'intercepter la touche pressée dans le code en JavaScript :
Réf : http://www.wtablettes.net/WD110AWP/WD110Awp.exe/CTX_4868-1-DIQxJRyIXB/WTAccueil/SYNC_814456796

Lorsque l'on presse sur la touche entrée cela execute le code du bouton (executetraitement)
// Touche enfoncée de ton champs de saisie (Navigateur)
SELON PgN_NmrTouche()
CAS 13 : ExécuteTraitement(Btn_Go,trtClic)
FIN

et la procédure Javascript
// Java Script Procédure Globale PgN_NmrTouche() (navigateur)
FUNCTION PgN_NmrTouche()
{
RETURN Event.keyCode;
}

Attention : si les champs de saisie sont dans une cellule, il faut écrire
SELON PgN_NmrTouche()
CAS 13 : ExécuteTraitement(Cellule1.Btn_Go,trtClic)
FIN

Ne fonctionne pas :/
Ne retourne rien
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

2. Je pourrais appeler un bouton qui simule un TAB jusqu'au bouton enregistrer, et celui-ci donne le focus au premier champ après enregistrement. Mais je n'arrive pas à créer une tabulation par programmation :(

EnvoieTouche (FONCTION)
ne fonctionne pas sous WebDev
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

3. J'aimerais éviter de créer un bouton caché par champ avec un
DonneFocus(SAI_MachinTruc)


Merci pour votre aide ! :)
Posté le 01 juillet 2015 - 11:42
Bonjour,

Voici comment j'intercepte les touches enfoncées.

Dans l'évènement onkeydown de ma zone de saisie :

// Validation des critères sur touche entrée
SI (JSPropriété("window", "event") ? JSPropriété("event", "keyCode") SINON JSPropriété("event", "which")) = 13 ALORS
ExécuteTraitement(btnRechercher, trtClic)
FIN

Attention, sous firefox event.keyCode ne fonctionne pas !!! C'est event.wich.

Bonne journée
Membre enregistré
70 messages
Popularité : +2 (2 votes)
Posté le 01 juillet 2015 - 11:43
Bonjour,

Voici comment j'intercepte les touches enfoncées.

Dans l'évènement onkeydown de ma zone de saisie :

// Validation des critères sur touche entrée
SI (JSPropriété("window", "event") ? JSPropriété("event", "keyCode") SINON JSPropriété("event", "which")) = 13 ALORS
ExécuteTraitement(btnRechercher, trtClic)
FIN

Attention, sous firefox event.keyCode ne fonctionne pas !!! C'est event.wich.

Bonne journée
Membre enregistré
16 messages
Posté le 08 juillet 2015 - 09:49
Merci beaucoup ChristopheM, ça marche du tonnerre ! :merci:

Deuxième question, est-ce que je peux "facilement" transformer mon <<Enter>> en <<Tab>> ?
Je voudrais passer à la case suivante avec une même fonction afin de regrouper le code.

Bonne journée à tous :)
Membre enregistré
70 messages
Popularité : +2 (2 votes)
Posté le 08 juillet 2015 - 11:35
Je pense qu'en réaffectant le keyCode ou le which à la valeur du tab (code 9), cela devrait le faire puisque l'évènement est ensuite propagé à windows qui lui interprète à son tour le code touche.

Cela peut peut-être fonctionner :

SI JSPropriété("window", "event") ALORS
JSPropriété("event", "keyCode") = 9
SINON
JSMéthode("event", "which") = 9
FIN

A tester !!!
Membre enregistré
16 messages
Posté le 24 avril 2017 - 11:21
Merci, j'utilise ceci depuis 2 ans maintenant.

Pour l'expédition, on scanne les code barres avec un lecteur et il passe automatiquement à la ligne si le numéro n'a pas déjà été scanné et qu'il est bien en stock, pour être livré.

Dans le code navigateur WL Touche pressée (onkeypress) de SAI_NumSerie
// Passage à la case suivante avec la touche entrée
SI (JSPropriété("window", "event") ? JSPropriété("event", "keyCode") SINON JSPropriété("event", "which")) = 13 ALORS
// On récupère le numéro de la ligne
SAI_NumLigne = Val(ZR_Articles)
// On récupère le numéro de série
sNumSerieSaisi est une chaîne = ZR_Articles.ATT_NumSerie
SI sNumSerieSaisi <> "" ALORS // S'il n'y a pas de numéro de série, on ne compare pas aux autres
//Info("Numéro de ligne = " + numLigne + rc + rc + "Numéro de série saisi = " + numSerieSaisi)
ZR_Articles = 0
TANTQUE Val(ZR_Articles) < ZR_Articles..Occurrence // Evite les doublons
//info("boucle tant que " + rc + "Val(ZR_NumSerie) < ZR_NumSerie..Occurrence " + rc + Val(ZR_NumSerie) + " < " + ZR_NumSerie..Occurrence )
ZR_Articles = Val(ZR_Articles) + 1
SI ZR_Articles.ATT_NumSerie = sNumSerieSaisi ET Val(ZR_Articles) <> SAI_NumLigne ALORS
POPUP_Warning.LIB_TexteWarning = "Ce numéro de série a déjà été saisi !"
PopupAffiche(POPUP_Warning)
DonneFocus(POPUP_Warning.SAI_FocusErreur)
RETOUR
FIN
FIN
FIN
// Contrôle si l'élément existe dans le stock
ExécuteTraitement(BTN_CheckStock,trtClic)

// Donne le focus à la ligne suivante
SI SAI_NumLigne < ZR_Articles..Occurrence ALORS
ZR_Articles = SAI_NumLigne + 1
DonneFocus(ZR_Articles.ATT_QteLivree)
SINON // Sinon, on donne le focus au n° tracking afin de pouvoir le scanner directement après la saisie des numéros de série
ZR_Articles = SAI_NumLigne
DonneFocus(CELL_InfosColis.SAI_NumColis)
//info("ZR_NumSerie (" + ZR_NumSerie + ") < ZR_NumSerie..Occurrence (" + ZR_NumSerie..Occurrence + ") = False")
//ExécuteTraitement(LIEN_FinListe,trtClic) // Avertissement sonore, ne marche pas
FIN
FIN
Message modifié, 24 avril 2017 - 11:27