locked
Comment transformer les caractères en majuscules

    General discussion

  • Pour quelques composants TextBox d’une page web, on a besoin d’écrire avec des majuscules seulement. Pour ne pas être obligé de retourner une erreur de validation à l’utilisateur s’il ne tape pas correctement, on peut implémenter des méthodes pour transformer automatiquement les caractères en majuscules.

     

    On a deux modalités pour ça : en faisant un postback et charger la partie serveur de faire la conversion, ou à l’aide d’une fonction client écrite en Java.

     

    La première méthode :

    On ajoute un composant TextBox et un composant LinkButton sur la page.

    Dans la partie du code on ajoute le code :

    protected void Page_Load(object sender, EventArgs e)
            {
                if(!Page.IsPostBack)
                {
                               TextBox1.Attributes.Add("autocomplete", "off") ;           
                               TextBox1.Attributes.Add("onkeyup", "javascript:__doPostBack('LinkButton1','')");
                }
    }
    
    

     

    Ce code transforme le composant LinkButton en gestionnaire d’évènements pour TextBox. Chaque fois que l’utilisateur tape un caractère dans le TextBox, on fait un postback pour transformer le contenu du textbox.

    On ajoute aussi ce code qui va convertir les lettres en majuscules :

      protected void TextChanged(object sender, EventArgs e)

            {

                TextBox1.Text=TextBox1.Text.ToUpper();

                this.TextBox1.Focus();            

            }
            

      

    Maintenant, on doit positionner le curseur dans le textbox a sa position initiale, pour permettre aux utilisateurs de continuer à taper. On ajoute donc l’évènement on focus au contrôle TextBox :

     

    <asp:TextBox ID="TextBox1" runat="server" onfocus="SetCursorToTextEnd(this.id)" ontextchanged="TextChanged"></asp:TextBox>
    
    

     

    Et on ajoute la fonction Java qui va positionner le curseur :

     

    <script>
        function SetCursorToTextEnd(textControlID) {
            var text = document.getElementById(textControlID);
            if (text != null && text.value.length > 0) {
                if (text.createTextRange) {
                    var FieldRange = text.createTextRange();
                    FieldRange.moveStart('character', text.value.length);
                    FieldRange.collapse();
                    FieldRange.select();
                }
            }
        }    
    </script>
    
    
    
    

     

    La deuxième méthode fait appel seulement aux fonctions utilisateur. On ajoute la fonction Java toUpperCase() a l’évènements onkeyup du TextBox :

     

    protected void Page_Load(object sender, EventArgs e)
            {
                if(!Page.IsPostBack)
                {
                               TextBox1.Attributes.Add("autocomplete", "off") ;           
                               TextBox1.Attributes.Add("onkeyup", "toUpperCase()"); 
                }
            }
    
    

     

     

    Apres, on écrit la fonction Java :

    <script>
        function toUpperCase() {
            document.form1.TextBox1.value = document.form1.TextBox1.value.toUpperCase();
        }
    </script>
    
    

     

    Pour plusieurs informations, visitez la page Foire aux Questions – ASP.NET

     


    Alex Petrescu - MSFT
    Tuesday, March 23, 2010 1:49 PM
    Moderator