Comment puis-je forcer input à la majuscule dans un ASP.NET textbox?

j'écris un ASP.NET application. J'ai une boîte de texte sur une webform, et je veux forcer n'importe quel type d'utilisateur à la majuscule. J'aimerais le faire sur la face avant. Vous devriez également noter qu'il y a un contrôle de validation sur cette textbox, donc je veux m'assurer que la solution n'interfère pas avec ASP.NET validation.

Précision: Il semble que la transformation du texte CSS fasse apparaître les entrées de l'utilisateur en majuscules. Cependant, sous le capot, c'est toujours cas inférieur lorsque le contrôle de validation échoue. Vous voyez, mon contrôle de validation vérifie si un code d'état valide est entré, cependant l'expression régulière que j'utilise ne fonctionne qu'avec des caractères majuscules.

31
demandé sur Peter Mortensen 2008-10-14 22:54:03

20 réponses

pourquoi ne pas utiliser une combinaison du CSS et du backend? Utilisation:

style='text-transform:uppercase' 

sur la boîte de texte, et dans votre code d'utilisation:

Textbox.Value.ToUpper();

Vous pouvez également facilement changer votre regex sur le validateur d'utiliser des minuscules et des majuscules. C'est probablement la solution plus facile que de leur imposer un Majuscule.

47
répondu Ryan Abbott 2012-03-07 16:09:01

Utilisez un style CSS sur la zone de texte. Votre CSS devrait être quelque chose comme ceci:

.uppercase
{
    text-transform: uppercase;
}

<asp:TextBox ID="TextBox1" runat="server" Text="" CssClass="uppercase"></asp:TextBox>;
21
répondu billb 2011-07-11 22:16:41

OK, après les tests, voici une meilleure solution, plus propre.

$('#FirstName').bind('keyup', function () {

    // Get the current value of the contents within the text box
    var val = $('#FirstName').val().toUpperCase();

    // Reset the current value to the Upper Case Value
    $('#FirstName').val(val);

});
9
répondu Robert Green MBA 2012-03-07 22:48:39
**I would do like:
<asp:TextBox ID="txtName" onkeyup="this.value=this.value.toUpperCase()" runat="server"></asp:TextBox>**
6
répondu Vinay Yadav 2010-01-11 15:10:54

Vous pouvez intercepter les évènements de la touche press, annuler ceux en minuscules, et ajouter leurs versions en majuscules à l'entrée:

window.onload = function () {
    var input = document.getElementById("test");

    input.onkeypress = function () {
        // So that things work both on Firefox and Internet Explorer.
        var evt = arguments[0] || event;
        var char = String.fromCharCode(evt.which || evt.keyCode);

        // Is it a lowercase character?
        if (/[a-z]/.test(char)) {
            // Append its uppercase version
            input.value += char.toUpperCase();

            // Cancel the original event
            evt.cancelBubble = true;
            return false;
        }
    }
};

cela fonctionne à la fois dans Firefox et Internet Explorer. Vous pouvez le voir en action ici.

6
répondu Ates Goral 2011-07-11 22:20:14
<!-- Script by hscripts.com -->
<script language=javascript>
    function upper(ustr)
    {
        var str=ustr.value;
        ustr.value=str.toUpperCase();
    }

    function lower(ustr)
    {
        var str=ustr.value;
        ustr.value=str.toLowerCase();
    }
</script>

<form>
    Type Lower-case Letters<textarea name="address" onkeyup="upper(this)"></textarea>
</form>

<form>
    Type Upper-case Letters<textarea name="address" onkeyup="lower(this)"></textarea>
</form>
3
répondu Peter Mortensen 2011-07-11 22:21:16
 style='text-transform:uppercase'
2
répondu Diodeus - James MacFarlane 2008-10-14 19:00:19

je viens de faire quelque chose de similaire aujourd'hui. Voici la version modifiée:

<asp:TextBox ID="txtInput" runat="server"></asp:TextBox>
<script type="text/javascript">
    function setFormat() {
        var inp = document.getElementById('ctl00_MainContent_txtInput');
        var x = inp.value;
        inp.value = x.toUpperCase();
    }

    var inp = document.getElementById('ctl00_MainContent_txtInput');
    inp.onblur = function(evt) {
        setFormat();
    };
</script>

en gros, le script fixe un événement qui se déclenche lorsque la zone de texte perd sa mise au point.

2
répondu Jason Z 2008-10-14 19:44:20

je le ferais en utilisant jQuery.

<script src="Scripts/jquery-1.3.2.js" type="text/javascript"></script>
<script type="text/javascript">
    $(document).ready(function() {
        $("#txt").keydown(function(e) {
            if (e.keyCode >= 65 & e.keyCode <= 90) {
                val1 = $("#txt").val();
                $("#txt").val(val1 + String.fromCharCode(e.keyCode));
                return false;
            }
        });
    });
</script>
/script dossier.

2
répondu Cyril Gupta 2011-07-11 22:22:38

j'ai fait quelques analyses sur cette question sur quatre versions de navigateur populaires.

  1. la balise style simple affiche les caractères en majuscules mais la valeur de contrôle reste quand même en minuscules
  2. la fonctionnalité keypress utilisant le code char affiché ci-dessus est un peu inquiétante certains comme dans firefox chrome et safari il désactive la fonctionnalité à Ctrl+ V dans le contrôle.
  3. l'autre problème avec l'utilisation du niveau de caractère pour majuscules est pas la traduction de l'ensemble de la chaîne en majuscules.
  4. la réponse que j'ai trouvée est d'implémenter ceci sur keyup en conjonction avec la balise style.

    <-- form name="frmTest" -->
    <-- input type="text" size=100 class="ucasetext" name="textBoxUCase" id="textBoxUCase" -->
    <-- /form -->
    
    window.onload = function() {
        var input = document.frmTest.textBoxUCase;
        input.onkeyup = function() {
            input.value = input.value.toUpperCase();
        }
    };
    
2
répondu Vasan Ramani 2011-07-11 22:24:22

text-transform CSS property specifies how to capitalize an element's text. It can be used to make text appear in all-uppercase or all-lowercase

CssClass

WebControl.CssClass Propriété

vous pouvez en apprendre plus sur elle - https://developer.mozilla.org/en/docs/Web/CSS/text-transform

https://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.webcontrol.cssclass(v=vs. 110).aspx


utiliserStyle="text-transform: uppercase;" ou CssClass="upper"

2
répondu Codeone 2016-06-22 08:30:49

définissez le style sur la boîte de texte comme text-transform: uppercase?

1
répondu Will 2008-10-14 18:57:19

utilisez le CSS De text-transform pour le front-end et ensuite utilisez la méthode toUpper sur votre côté string server avant de valider.

1
répondu 2008-10-14 19:26:08

CSS pourrait être de l'aide ici.

style="text-transform: uppercase";"

est-ce que cela aide?

1
répondu shahkalpesh 2009-08-28 04:47:31

voici une solution qui a fonctionné pour moi.

http://plugins.jquery.com/project/bestupper

vous devez obtenir le JavaScript de http://plugins.jquery.com/files/jquery.bestupper.min.js.txt et voilà.

Fonctionne comme un charme!

1
répondu Robert Green MBA 2011-08-30 21:21:34

j'utilise une simple déclaration en ligne

<asp:TextBox ID="txtLocatorName" runat="server"
 style="text-transform:uppercase" CssClass="textbox"  
 TabIndex="1">
</asp:TextBox>

si vous ne voulez pas utiliser les classes css, vous pouvez simplement utiliser la déclaration de style inline.(Juste visiblement mettre en majuscules) :)

du côté du serveur

string UCstring = txtName.Text.ToUpper();
1
répondu Vijay Kumbhoje 2015-10-27 01:12:11

je me rends compte qu'il est un peu tard, mais je n'ai pas pu trouver une bonne réponse qui a fonctionné avec ASP.NET AJAX, so I fixed the code above:

function ToUpper() {
        // So that things work both on FF and IE
        var evt = arguments[0] || event;
        var char = String.fromCharCode(evt.which || evt.keyCode);

        // Is it a lowercase character?
        if (/[a-z]/.test(char)) {
            // convert to uppercase version
            if (evt.which) {
                evt.which = char.toUpperCase().charCodeAt(0);
            }
            else {
                evt.keyCode = char.toUpperCase().charCodeAt(0);
            }
        }

        return true;
    }

Utilisés de la sorte:

       <asp:TextBox ID="txtAddManager" onKeyPress="ToUpper()" runat="server" 
             Width="84px" Font-Names="Courier New"></asp:TextBox>
0
répondu NetMage 2010-05-11 23:43:38

JavaScript a la fonction "toUpperCase ()" d'une chaîne de caractères.

Donc, quelque chose le long de ces lignes:

function makeUpperCase(this)
{
    this.value = this.value.toUpperCase();
}
0
répondu Stephen Wrighton 2011-07-11 22:17:48
  <telerik:RadTextBox ID="txtCityName" runat="server" MaxLength="50" Width="200px"
                            Style="text-transform: uppercase;">
0
répondu Chetan Sanghani 2013-03-30 10:58:02
     $().ready(docReady);

     function docReady() {

            $("#myTextbox").focusout(uCaseMe);
     }

     function uCaseMe() {

            var val = $(this).val().toUpperCase();

            // Reset the current value to the Upper Case Value
            $(this).val(val);
        }

C'est une réutilisables approche. N'importe quel nombre de boîtes de texte peut être fait de cette façon sans les nommer. Une solution de page large pourrait être obtenue en changeant le sélecteur dans docReady.

mon exemple utilise la mise au point perdue, la question ne précisait pas comme ils tapent. Vous pourriez déclencher le changement si c'est important dans votre scénario.

0
répondu greg 2014-09-17 17:06:15