[asp.net / vb.net] Désactiver / enlever le focus sur un bouton

Signaler
Messages postés
151
Date d'inscription
mercredi 18 septembre 2002
Statut
Membre
Dernière intervention
22 février 2007
-
Messages postés
6814
Date d'inscription
dimanche 15 décembre 2002
Statut
Modérateur
Dernière intervention
13 octobre 2010
-
Bonjour
Je sais, vous pensez que c'est hyper simple avec un petit code javascript ou autre mais j'ai aussi des règles à ajouter.

Voila lors du chargement d'une page sur un navigateur quelconque il y a plusieurs boutons avec d'autres controles comme des textbox. Par défault, un bouton est mis en brillance donc sélectionné et lorsque l'on appui sur entrée et bien cela lance l'évènement associé. Il s'agit ici d'un bouton asp, classique quoi.
Je souhaites donc que l'on enlève ce focus et ainsi cela évitera à l'utilisateur d'appuyer malencontreusement sur la touche entrée.
Le truc n'est pas d'interdire la touche entrée car par la tabulation il doit par la suite arriver au bouton pour appuyer sur entrée.
Voici les propriétées qui sont utilisées sur tous les boutons :




J'ai essayer de redéfinir le focus ailleur mais rien à faire il ne veut toujours pas enlever le focus.
Avez vous une idée?
Merci

5 réponses

Messages postés
192
Date d'inscription
dimanche 5 janvier 2003
Statut
Membre
Dernière intervention
9 mars 2007
1
Bonjour,

Moi j'utilise ce petit bout de code (il n'est pas de moi, et comme je n'ai jamais eu de problème avec je n'ai jamais regardé ce qu'il y avait dedant). Il y a juste a ppeler cette methode statique en lui passant le control sur lequel tu veux mettre le focus.

Public Shared Sub SetFocus(ByVal control As System.Web.UI.Control)
Dim sb As System.Text.StringBuilder = New System.Text.StringBuilder
sb.Append("" & Microsoft.VisualBasic.Chr(13) & "" & Microsoft.VisualBasic.Chr(10) & "<script language='JavaScript'>" & Microsoft.VisualBasic.Chr(13) & "" & Microsoft.VisualBasic.Chr(10) & "")
sb.Append("<!--" & Microsoft.VisualBasic.Chr(13) & "" & Microsoft.VisualBasic.Chr(10) & "")
sb.Append("function SetFocus()" & Microsoft.VisualBasic.Chr(13) & "" & Microsoft.VisualBasic.Chr(10) & "")
sb.Append("{" & Microsoft.VisualBasic.Chr(13) & "" & Microsoft.VisualBasic.Chr(10) & "")
sb.Append("" & Microsoft.VisualBasic.Chr(9) & "document.")
Dim p As System.Web.UI.Control = control.Parent
While Not (TypeOf p Is System.Web.UI.HtmlControls.HtmlForm)
p = p.Parent
End While
sb.Append(p.ClientID)
sb.Append("['")
sb.Append(control.UniqueID)
sb.Append("'].focus();" & Microsoft.VisualBasic.Chr(13) & "" & Microsoft.VisualBasic.Chr(10) & "")
sb.Append("}" & Microsoft.VisualBasic.Chr(13) & "" & Microsoft.VisualBasic.Chr(10) & "")
sb.Append("window.onload = SetFocus;" & Microsoft.VisualBasic.Chr(13) & "" & Microsoft.VisualBasic.Chr(10) & "")
sb.Append("// -->" & Microsoft.VisualBasic.Chr(13) & "" & Microsoft.VisualBasic.Chr(10) & "")
sb.Append("</script>")
control.Page.RegisterClientScriptBlock("SetFocus", sb.ToString)
End Sub

TiK - MCAD.NET
http://www.objectif-services.com
http://www.ultimecms.com
Messages postés
151
Date d'inscription
mercredi 18 septembre 2002
Statut
Membre
Dernière intervention
22 février 2007

Bonjour
Merci pour ta réponse mais malheureusement cela ne fonctionne pas chez moi je lui ai passé en paramètre tous les controles que j'avais mais il s'en fiche il garde toujours le bouton sélectionner...........
On peut prendre des ciseaux et découper l'écran ??????????? Comme ca il y aura plus rien
Une autre idée?
Messages postés
192
Date d'inscription
dimanche 5 janvier 2003
Statut
Membre
Dernière intervention
9 mars 2007
1
Recoucou,

Là, tu m'étonnes... c'est que tu dois avoir qqchose qui après la Sub SetFocus repositionne le focus sur ton boutton.
Autre piste, le JavaScript est-il bien activé sur ton navigateur ?

TiK - MCAD.NET
http://www.objectif-services.com
http://www.ultimecms.com
Messages postés
151
Date d'inscription
mercredi 18 septembre 2002
Statut
Membre
Dernière intervention
22 février 2007

Oh oui malheureusement car il y en as de ce P....n de javascript.
Comme tu peux voir je l'aime............
Il y a tout de même un truc qui me chiffonne........même en ayant le focus dans un textbox le bouton reste sélectionné et si l'on appuie sur entrée et bien cela lance l'évènementdu bouton.
Messages postés
6814
Date d'inscription
dimanche 15 décembre 2002
Statut
Modérateur
Dernière intervention
13 octobre 2010
28
Bonjour,

en asp.net 2 les controles qui peuvent etre focusable ont la méthode setfocus ... mais évidemment tu ne peux avoir qu'un seul focus en meme temps donc si aprés t'as du javascript qui modifie tout ca on peut rien pour toi :)

pour ce qui est du bouton quand tu appuies sur entrée, si tu met un panel, et dedans ton textbox, bouton, tu peux définir la propriété defaultbutton du panel, ainsi quand tu appuieras sur entrée en étant dans un des input de ton panel, c'est le bouton qui sera automatiquement "appuyé" :)


<HR>
Cyril - MVS - MCP ASP