Validation de formulaire en asp.net

Signaler
Messages postés
7
Date d'inscription
mardi 9 septembre 2003
Statut
Membre
Dernière intervention
6 septembre 2004
-
Messages postés
6814
Date d'inscription
dimanche 15 décembre 2002
Statut
Modérateur
Dernière intervention
13 octobre 2010
-
Il y a t'il une méthode pour éviter que l'utilisateur ne clique 2 fois sur un bouton de validation de formulaire

15 réponses

Messages postés
158
Date d'inscription
samedi 22 juin 2002
Statut
Membre
Dernière intervention
27 juin 2015
1
Oui
Sur l'évènement onClick tu mets une variable de session

Voilà ce que ça donne

Sub PageLoad If session("BtnClique") 1 Then me.MonBouton.enable false

End Sub

Sub MonBouton_OnClick(...) If session("BtnClique") 0 or IsNothing(Session("BtnClique") Then session("BtnClique") 1
(... ton code)
End Sub

Cela répond à ta question ?
****************************************************
Il n'y a pas de pb sans solutions : il faut juste trouver le temps pour les chercher
Messages postés
7
Date d'inscription
mardi 9 septembre 2003
Statut
Membre
Dernière intervention
6 septembre 2004

Merci de ta réponse
mais comment déclarer la sub MonBouton_Onclick dans la page aspx lorsque celui ci est un
Messages postés
158
Date d'inscription
samedi 22 juin 2002
Statut
Membre
Dernière intervention
27 juin 2015
1
En mode HTML tu doubles cliques dessus. Cela va t'ouvrir le code serveur derrière

:)

****************************************************
Il n'y a pas de pb sans solutions : il faut juste trouver le temps pour les chercher
Messages postés
7
Date d'inscription
mardi 9 septembre 2003
Statut
Membre
Dernière intervention
6 septembre 2004

Cette solution ne marche pas car tant que le serveur n'a pas renvoyer la nouvelle page le bouton est toujours actif et l'utilisateur peut cliquer autant de fois qu'il le veut
Je pense qu'il faudrait mettre en place un javascript au niveau client, qu'en pense tu ?
Messages postés
158
Date d'inscription
samedi 22 juin 2002
Statut
Membre
Dernière intervention
27 juin 2015
1
En fait c encore plus simple.

Sur ta fonction OnClick, tu marques tout simplement

Sub MyBtn_OnClick()
MyBtn.enable = false
End Sub

Théoriquement, ça devrait marcher là. Car tu n'es pas obligé de recharger la page...

ça marche ?

****************************************************
Il n'y a pas de pb sans solutions : il faut juste trouver le temps pour les chercher
Messages postés
7
Date d'inscription
mardi 9 septembre 2003
Statut
Membre
Dernière intervention
6 septembre 2004

Excuse moi pour cette reponse tardive je n'etais pas dispo cettte après midi

Le principe marche mais le bouton ne sera désactiver que lorsque la page sera recharger donc si le traitement sur le serveur est un peu long (ex 3 a 4 seconde) l'utilisateur pourra cliquez plusieurs fois sur le bouton

encore merci pour ton aide
Messages postés
158
Date d'inscription
samedi 22 juin 2002
Statut
Membre
Dernière intervention
27 juin 2015
1
C la seule solution en VBNet. D'un autre coté, si tu mets un boolean pour savoir qd un bouton a été cliqué, après tu peux exéctuer ton code en fonction de ce boolean. Et il restera pendant x temps à enable. Effectivement.

D'un autre coté, je ne suis mm pas sur qu'il existe un code en javascript pour toucher à la fonction "enable" d'un bouton de type asp.net a vrai dire...
Donc mon aide s'arrête là !!

Bon courage.
:)

****************************************************
Il n'y a pas de pb sans solutions : il faut juste trouver le temps pour les chercher
Messages postés
6814
Date d'inscription
dimanche 15 décembre 2002
Statut
Modérateur
Dernière intervention
13 octobre 2010
28
Il y a une solution, je me rappelle d'un controle developpé par une société tiers qui avait fait ce genre de bouton, mais je me rappelle plus l'adresse du site, j'avais vu ca à partir d'une news de c2i.fr il y a 1 ou 2 mois, j'essaye de trouver l'url pour telecharger ce controle qui en plus est gratuit.

Cyril (Alias Jesusonline)
Messages postés
7
Date d'inscription
mardi 9 septembre 2003
Statut
Membre
Dernière intervention
6 septembre 2004

Merci a tous les deux
Je cherche encore mais j'ai peut etre une soltion en javascript

il faut dabord déclarer la function dans le Page_Load,
Mon_Bouton.Attributes.Add("onclick", "Mon_Bouton_onclick()")

ensuite dans le fichier aspx
<script language="javascript" id="clientEventHandlersJS">
function Mon_Bouton_onclick() {
Mon_Bouton.disabled=true
}
</script>

Cela fait bien passer le bouton en grisée lorsque l'on clique dessus ,mais seulement un gros HIC , la procédure dans vb n'est plus executée
Messages postés
6814
Date d'inscription
dimanche 15 décembre 2002
Statut
Modérateur
Dernière intervention
13 octobre 2010
28
normal que ta procédure ne soit pas executé par vb car tu remplaces le onclick qui a l'origine servait pour le vb par le tien, mais j'aurais pas pensé qu'il aurait accepté ce code ...

Je suis dsl mais je retrouve plus l'adresse qui donnait ce genre de bouton :( mais je suis sur qu'il existe sur le net mais j'ai perdu l'adresse :(

Sinon j'ai peut etre une solution à ton problème en utilisant le meme principe que toi, j'ai encore pas regardé si c'est possible mais apparement avec ta syntaxe tu ecrase le code qu'asp.net a fait pour toi pour l'evenement onclick il faudrais donc que tu arrives à recuperer l'attribut qu'asp.net à generé puis que tu mettes le tien devant ...

je ferais un truc comme ca

Mon_Bouton.Attributes.Add("onclick", "Mon_Bouton_onclick();" & Mon_Bouton.Attributes("onclick"))

Mais je suis pas sur que Mon_Bouton.Attributes("onclick") soit correcte mais j'espere que tu as compris le principe :)

bon courage

Cyril (Alias Jesusonline)
Messages postés
7
Date d'inscription
mardi 9 septembre 2003
Statut
Membre
Dernière intervention
6 septembre 2004

dans ma procédure le onclick de vb n'esst pas désactiver
c'est le fait de mettre le bouton en diabled qui empeche la procédure vb de s'executer
j'ai donc contourner le problème dans le javascript
j'ai rajouter un zone de texte hidden que j'ai nommé "VALID"

lors du premier click je vérifie que la propriété value deVALID est différente de 1 si c'est le cas je la passe a 1 et ma procédure VB s'exécute correctement
Si l'utlisateur clique une seconde fois alors je met a disabled le bouton et je renvoi false

VB
Mon_Bouton.Attributes.Add("onclick", "return Mon_Bouton_onclick();")

ASPX
function Mon_Bouton_onclick()
{if(Form1.VALID.value==1){
Form1.Mon_Boutton.disabled=true
return false}

else {Form1.VALID.value="1"}
}
Messages postés
6814
Date d'inscription
dimanche 15 décembre 2002
Statut
Modérateur
Dernière intervention
13 octobre 2010
28
Interessant, je trouve bizarre que le fait de mettre enabled apres l'execution du javascript pour asp.net empeche la creation du code, mais j'aime bien ta methode :) et le principal c'est que ca marche

@+

Cyril (Alias Jesusonline)
Messages postés
6814
Date d'inscription
dimanche 15 décembre 2002
Statut
Modérateur
Dernière intervention
13 octobre 2010
28
Intrigué par ta methode j'ai teste, j'y suis arrivé mais (car il faut tj un mais) il y a un truc qui me derange, le bouton est girsé lorsque l'on clique la deuxieme fois mais pas la premiere, aurais tu une idée du pourkoi ? je chercher à savoir ca car je suis en train de creer un controle derivant de button qui permet de faire ce que tu veux et j'aimerais bien que ce soit parfait :)

Cyril (Alias Jesusonline)
Messages postés
6814
Date d'inscription
dimanche 15 décembre 2002
Statut
Modérateur
Dernière intervention
13 octobre 2010
28
J'ai trouvé ma petite astruce et en plus ca ne fais meme pas intervenir un champ caché, j'ai juste retarder l'appel de la fonction d'1ms et ca a suffit :

AddAttribute("onclick", " self.setTimeout('OneClick();',1);")

javascript:
function OneClick(){document.getElementById("ButtonUnique1").disabled=true;}

Je vais essayer de faire une asssembly et peut etre qu'avec de la chance il y aura une nouvelle source demain

Cyril (Alias Jesusonline)
Messages postés
6814
Date d'inscription
dimanche 15 décembre 2002
Statut
Modérateur
Dernière intervention
13 octobre 2010
28
J'ai posté ma source : http://www.aspfr.com/code.aspx?ID=21560

@+

Cyril (Alias Jesusonline)