11
votes

Désactiver le backpace dans la zone de texte via JavaScript

J'ai une zone de texte qui est étendue par un calendrier Toolkit de contrôle AJAX.

Je veux le faire afin que l'utilisateur ne puisse pas éditer la zone de texte et devra plutôt utiliser l'extension du calendrier pour la saisie. P> J'ai réussi à bloquer toutes les clés sauf le retour arrière! p>

C'est ce que j'ai jusqu'à présent: P>

<asp:TextBox ID="TextBox1" runat="server" onKeyPress="javascript: return false;" onKeyDown="javascript: return false;" onPaste="javascript: return false;" />


0 commentaires

10 Réponses :


8
votes

Vous ne pouvez pas simplement utiliser l'attribut HTML READONLY = "READONLY" CODE>?

<input type="text" name="country" value="Norway"   readonly="readonly" />

<textarea rows="3" cols="25" readonly="readonly">
It should work! :)
</textarea>


7 commentaires

Enregistrez-vous pour résoudre ce problème avec un équivalent ASP.NET?


Textboxes doit avoir la propriété Radionly: MSDN .microsoft.com / fr-US / Bibliothèque / ...


Je crois que c'est readonly = "vrai". Cela ne permet pas de loadonly = "Readonly". J'ai essayé Readonly = "vrai", mais malheureusement, cela ne joue pas bien avec l'extension et la validation du calendrier.


@Andreas Bonini - Koper: bonne trouvaille! Toutefois, régler cette propriété à true a un effet secondaire désagréable où la propriété antext de contrôle est inchangée sur des post-packs, la valeur définie par l'extension du calendrier OPS sera ignorée. Comportement stupide, mais "par conception". Peut-être un hack pour entrer dans le lisonly html est nécessaire.


Une chose à surveiller avec «Readonly» dans ASP.NET: Les modifications côté client seront ignorées et écrasées avec la valeur dans la vision. Plus d'informations ici: DotNetsLackers.com/ado_net/...


C'est readonly = "true" sur le contrôle du serveur, mais comme écrit dans la réponse (HTML), c'est bien. Nous utilisons cela avec le contrôle CalendAreXtender, et pendant que nous avons eu des problèmes avec la valeur sur le post-plan-retour, nous l'avons fini par travailler.


Si le réglage réadonnée sur le contrôle du serveur fait des problèmes, c'est une solution bien meilleure à définir sur le client afin que le contrôle fonctionnera exactement le même sur le serveur comme s'il n'était pas réglé à la lecture. Et cela prendra également la charge du moteur de script dans votre navigateur, car vous n'exécuterez pas beaucoup de code. Aucun événement, non rien. Il suffit de définir quelque chose sur le document.Onload.



4
votes

Que diriez-vous d'utiliser une étiquette pour l'écran et une zone de texte masquée pour récupérer la valeur sur le serveur?


0 commentaires

1
votes

Comme d'autres ont dit Readonly = "True" va casser le mécanisme de post-relance.

Je pense que vous pouvez vous entendre dans votre code-derrière en accédant directement à l'objet de demande directement pendant PAGELOAD: P>

<input type="text" readonly="readonly" runat="server" id="myTextBox" />


0 commentaires

0
votes

Voici une solution possible ... Ajouter un événement auditeur ...

function KeyCheck(e) {
 var KeyID = (window.event) ? event.keyCode : e.keyCode;
 if (KeyID == 8 ) {
    alert('no backspaces!!);
 }
}


0 commentaires

38
votes

ZX12R était proche. Ceci est la solution correcte:

La zone de texte est comme ceci: xxx

et le script ressemble à ceci: xxx < P> Tout d'abord, le backpace n'allait pas sur la touche Presse, de sorte que vous devez utiliser la touche.


1 commentaires

très sensible et semble parfait .. :) Dommage Andrew a trouvé sa propre solution ..;)



2
votes

Vous devez appliquer en lecture seule sur le contrôleur côté client uniquement, de sorte que ASP.NET ne le voit pas et lit toujours les données sur le post-plan. Vous pouvez faire de plusieurs manières, l'une des tâches plus faciles si vous utilisez JQuery consiste à ajouter une classe aux boîtes textuelles, par exemple. CSSClass = "Readonly" en question et $ (". Readonly"). ATTR ("Readonly", True); . .


0 commentaires

0
votes

Attribut Readonly n'aide pas. Le retour arrière est toujours en train de prendre votre navigateur vers la page de retour même si votre zone de texte est en lecture seule ..


0 commentaires

0
votes

Utilisez des zones de texte régulières non en lecture seule et non désactivée, utilisez simplement JavaScript côté client pour ignorer les touches. Cela ignorera toutes les touches afin que vous aurez votre comportement réadien et cela ignorera également le backpace.

<input type="text" value="Your Text Here" onkeydown="return false;" />


0 commentaires

0
votes

Pas besoin d'appeler une fonction et tout simplement essayez-le:

<asp:TextBox runat="server" ID="txt" onkeydown="return false;" 
    onpaste = "return false;" onkeypress="return false;" />


0 commentaires

0
votes

J'ai pu faire quelque chose de similaire, avec JQuery. Il suffit de le mettre ici pour référence!

$("#inputID").keypress(function (e)
{e.preventDefault();});

$("#inputID").keydown(function (e)
{e.preventDefault();});


0 commentaires