[asp.net / vb.net] Désactiver / enlever le focus sur un bouton
cs_rabbiwan
Messages postés151Date d'inscriptionmercredi 18 septembre 2002StatutMembreDernière intervention22 février 2007
-
21 mars 2006 à 09:52
jesusonline
Messages postés6814Date d'inscriptiondimanche 15 décembre 2002StatutMembreDernière intervention13 octobre 2010
-
21 mars 2006 à 13:34
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
tikrimi
Messages postés192Date d'inscriptiondimanche 5 janvier 2003StatutMembreDernière intervention 9 mars 20071 21 mars 2006 à 10:03
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
cs_rabbiwan
Messages postés151Date d'inscriptionmercredi 18 septembre 2002StatutMembreDernière intervention22 février 2007 21 mars 2006 à 10:39
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?
tikrimi
Messages postés192Date d'inscriptiondimanche 5 janvier 2003StatutMembreDernière intervention 9 mars 20071 21 mars 2006 à 10:54
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 ?
cs_rabbiwan
Messages postés151Date d'inscriptionmercredi 18 septembre 2002StatutMembreDernière intervention22 février 2007 21 mars 2006 à 11:15
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.
Vous n’avez pas trouvé la réponse que vous recherchez ?
jesusonline
Messages postés6814Date d'inscriptiondimanche 15 décembre 2002StatutMembreDernière intervention13 octobre 201029 21 mars 2006 à 13:34
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é" :)