Salut,
Je ne sais pas si je poste ce sujet dans le bon forum, mais bon, c'est un pb à cheval entre HTML, Javascript et ASPX...
J'explique :
Je développe une appli intranet en ASPX.
Sur plusieurs pages, j'ai des formulaires HTML qui permettent à l'utilisateur de modifier des champs dans ma BDD.
J'ai donc des zones de saisies pour lesquelles je veux brider la taille maxi autorisée (ie max 256 caractères).
Pour une zone de saisie mono ligne, .NET génère une balise HTML de ce type
Je veux des zones de saisies multi lignes. Dans ce cas .NET génère une balise HTML du type
Code : Sélectionner tout - Visualiser dans une fenêtre à part <input name="txtObservations" type="text" maxlength="256">
Malheureusement, pour les textarea, il n'y a pas de propriété maxlength.
Code : Sélectionner tout - Visualiser dans une fenêtre à part <textarea name="txtObservations">
J'ai donc imaginé de tronquer le texte saisi dans script côté client.
J'ai ajouté le JavaScript suivant :
Puis, j'ai ajouté la propriété onchange sur ma zone de saisie pour appeler mon script. En gros ça donne ça :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 // cette fonction permet de tronquer la longueur d'un champ de saisie multi-ligne function TronqueLongueur(source, MaxLength) { if (source.value.length > MaxLength) { // retrouve le nom du champ var pos_underscore = source.id.lastIndexOf("_"); var nom_champ = source.id.substring(pos_underscore+1); // message d'avertissement if (confirm("Le texte du champ '" + nom_champ + "' est trop long (" + source.value.length + " car.).\n\nIl va etre tronque a une longueur de " + MaxLength + " caracteres.")) { // tronque la valeur saisie source.value = source.value.substring(0, MaxLength); } } }
Quand l'utilisateur saisit du texte trop grand dans la zone multi lignes, un message de confirmation s'affiche pour lui signifier que le texte va être tronqué à 256 caractères.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 <textarea name="txtObservations" onchange="JavaScript:TronqueLongueur(this,256);">
Ce message s'affiche au moment où le curseur quitte le champ de saisie. Par exemple, si l'utilisateur clique dans un autre champ.
Mon pb se situe au niveau d'un bouton SUBMIT.
En effet, lorsque l'utilisateur clique sur le bouton (typiquement pour VALIDER la saisie), le JavaScript se déclenche bien pour tronquer mon texte, mais si le popup CONFIRM s'est affiché, le reste de l'action (le submit) ne s'exécute pas => pas de validation de ma saisie côté serveur => pas d'insertion dans ma BDD...
Comment puis-je résoudre mon pb ?
Est-ce lié au popup ? Y-a-t'il une insctruction JavaScript à ajouter dans ma fonction TronqueLongueur ? Faut-il que j'appelle sur un autre évènement que onchange ?
Merci de votre aide
Vincent
Partager