2010-02-19 4 views
2

J'ai une application web avec un formulaire qui a des champs désactivés. Il permet une fonction "Enregistrer sous", ce qui signifie que les paramètres peuvent être copiés dans une nouvelle configuration (sans être modifiés) et dans la nouvelle configuration, ils peuvent être modifiés. Le problème que je rencontre avec ceci est que puisque les champs sont désactivés, ils ne sont pas publiés et n'apparaissent pas dans l'objet de contexte du côté serveur.ASP.NET 3.5 - Rendre un champ en lecture seule/non modifiable sans le "désactiver"

Lorsque j'ai supprimé la logique pour désactiver les champs, cette partie fonctionne correctement. Donc, le problème restant est, comment "désactiver" les champs (ne permettre aucune modification des données dans l'un des champs d'entrée) sans vraiment les "désactiver" (de sorte que les données soient enregistrées lors de l'enregistrement)? Je cherchais à l'origine un moyen de le faire en CSS, mais je ne sais pas si elle existe. La meilleure solution est bien sûr la plus simple. Merci d'avance!

(Note: par 'désactivé' je veux dire "Les zones de texte s'affichent mais aucun texte à l'intérieur de celles-ci ne peut être modifié." Peu importe que le curseur apparaisse ou non J'avais une préférence ce ne serait aucun curseur ...)

Répondre

3

http://www.w3schools.com/TAGS/att_input_readonly.asp Readonly attribut est ce que vous voulez.

+0

parfait ... ça me regardait droit dans le visage :) Je fais juste une boucle à travers les éléments qui étaient auparavant désactivés et à la place ajouter l'attr en lecture seule et cela fonctionne. dans Jquery cela ressemble à: // disable ($ (this)); (OLD) $ (this) .attr ("en lecture seule", "en lecture seule"); (NOUVEAU) – n2009

+0

dois aimer les simples –

+0

@ n2009 - donc c'est bon pour quelqu'un utilisant un lecteur d'écran qui ne supporte pas JS pour changer ces champs. J'espère que vous effectuerez également une validation côté serveur pour vous assurer qu'ils ont été modifiés. – tvanfosson

1

Je suggère que, au lieu d'utiliser les valeurs de champs non modifiables des entrées de la page, vous récupérez l'objet d'origine à partir de la base de données et copiez-les à partir de là. C'est assez trivial d'utiliser quelque chose comme Firebug pour modifier le contenu de la page dont le formulaire sera posté pour modifier les valeurs, même si elles sont marquées comme readonly. Puisque vous voulez vraiment les valeurs de l'original, je voudrais simplement reger l'objet et les copier. Ensuite, vous n'avez pas besoin de vous inquiéter de savoir si les propriétés d'origine (et non modifiables) peuvent être renvoyées.

+0

Vous n'avez même pas besoin de Firebug. Cela peut être fait à partir de n'importe quelle barre d'adresse de navigateur standard. –

+0

Je donnais juste une manière triviale de le faire, n'énumérant pas toutes les manières triviales. – tvanfosson

Questions connexes