J'écris une application ASP.NET. J'ai une zone de texte sur un formulaire Web et je veux forcer les majuscules quels que soient les types d'utilisateurs. Je voudrais le faire sur le front-end. Vous devez également noter qu'il existe un contrôle de validation sur cette zone de texte, donc je veux m'assurer que la solution n'interfère pas avec la validation ASP.NET.
Clarification: Il semble que la transformation de texte CSS fasse apparaître l'entrée utilisateur en majuscules. Cependant, sous le capot, c'est toujours des minuscules car le contrôle de validation échoue. Vous voyez, mon contrôle de validation vérifie si un code d'état valide est entré, mais l'expression régulière que j'utilise ne fonctionne qu'avec des caractères majuscules.
Pourquoi ne pas utiliser une combinaison du CSS et du backend? Utilisation:
style='text-transform:uppercase'
sur la TextBox, et dans votre code derrière l'utilisation:
Textbox.Value.ToUpper();
Vous pouvez également facilement changer votre expression régulière sur le validateur pour utiliser des lettres minuscules et majuscules. C'est probablement la solution la plus simple que d'imposer des majuscules sur eux.
Utilisez un style CSS sur la zone de texte. Votre CSS devrait ressembler à ceci:
.uppercase
{
text-transform: uppercase;
}
<asp:TextBox ID="TextBox1" runat="server" Text="" CssClass="uppercase"></asp:TextBox>;
D'accord, 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);
});
**I would do like:
<asp:TextBox ID="txtName" onkeyup="this.value=this.value.toUpperCase()" runat="server"></asp:TextBox>**
Vous pouvez intercepter les événements de pression de touche, annuler ceux qui sont en minuscules et ajouter leurs versions 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 .
<!-- 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>
J'ai fait une analyse de ce problème sur quatre versions de navigateur populaires.
la réponse que j'ai trouvée est de l'implémenter 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();
}
};
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>
Fondamentalement, le script attache un événement qui se déclenche lorsque la zone de texte perd le focus.
style='text-transform:uppercase'
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>
Vous devez avoir la bibliothèque jQuery dans le /script
dossier.
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 savoir plus à ce sujet - https://developer.mozilla.org/en/docs/Web/CSS/text-transform
utilisez Style="text-transform: uppercase;"
ou CssClass="upper"
Utilisez le CSS de transformation de texte pour le frontal, puis utilisez la méthode toUpper sur votre chaîne côté serveur avant de valider.
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 c'est parti.
Fonctionne comme un charme!
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 une déclaration de style en ligne (celle-ci rend simplement les majuscules visiblement) :)
Côté serveur
string UCstring = txtName.Text.ToUpper();
Définissez le style sur la zone de texte comme text-transform: uppercase ?
CSS pourrait être utile ici.
style="text-transform: uppercase";"
est-ce que cela aide?
<telerik:RadTextBox ID="txtCityName" runat="server" MaxLength="50" Width="200px"
Style="text-transform: uppercase;">
JavaScript a la fonction "toUpperCase ()" d'une chaîne.
Donc, quelque chose dans ce sens:
function makeUpperCase(this)
{
this.value = this.value.toUpperCase();
}
Je me rends compte qu'il est un peu tard, mais je n'ai pas trouvé de bonne réponse qui fonctionnait avec ASP.NET AJAX, j'ai donc corrigé le code ci-dessus:
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é comme tel:
<asp:TextBox ID="txtAddManager" onKeyPress="ToUpper()" runat="server"
Width="84px" Font-Names="Courier New"></asp:TextBox>
$().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);
}
Il s'agit d'une approche réutilisable. N'importe quel nombre de zones de texte peut être fait de cette façon sans les nommer. Une solution à l'échelle de la page pourrait être obtenue en changeant le sélecteur dans docReady.
Mon exemple utilise une focalisation perdue, la question n'a pas précisé lors de la frappe. Vous pouvez déclencher un changement si cela est important dans votre scénario.