begin process at 2012 05 30 04:07:47
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive Javascript

 > 

Archives

 > 

AU SECOURS !!!

 > 

Taille d'une chaine de caractere en pixel


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Taille d'une chaine de caractere en pixel

vendredi 3 mars 2006 à 17:38:00 | Taille d'une chaine de caractere en pixel

mchab

Bonjour
comme le sujet le laisse prévoir, je cherche à récupérer la taille en pixel d'une chaine de caracteres affichée dans un champ input en readonly.
explication sommaire :
la saisie se fait dans un champ "saischamp", avec une police fixe, tandis que l'affichage se fait dans un autre champ "affichchamp" et est soumi éventuellement à un changement de de taille de police par l'utilisateur, tout en devant rester dans un cadre bien défini et fixe. Le but est donc de limiter la saisie en fonction du résultat affiché. attention je ne cherche pas à limiter la saisie en fonction du nombre de caractères mais bien en fonction de la taille en pixel.
merci énauuuurmément !
mardi 7 mars 2006 à 08:26:58 | Re : Taille d'une chaine de caractere en pixel

PetoleTeam

Membre Club

Amis du Jour Bonjour...

Essaies avec un DIV caché peut être...

Tu écris dans le DIV le texte saisi à la volé, avec l'événement onChange par exemple, avec le même style, et tu récupéres la largeur de cellui ci.

<DIV ID="CACHE" style="width:auto; visibility:hidden"></DIV>

;0)


mardi 7 mars 2006 à 10:49:48 | Re : Taille d'une chaine de caractere en pixel

mchab

Merci très beaucoup énormément, j'ai commencé des tests, et j'ai deux observations :

- Comment écrire dans le <div> ?
 Je ne vois pas d'autre façon que innerHTML : d'autres idées ?
- Comment récupérer la taille du <div>?
 j'ai essayé des trucs du genre document.getElementById('CACHE').width mais cela ne fonctionne pas (width n'est pas une propriété de <div>). Quant à document.getElementById('CACHE').style.width, cela retourne (forcément) auto !
Aaargh !

mardi 7 mars 2006 à 10:49:55 | Re : Taille d'une chaine de caractere en pixel

mchab

Merci très beaucoup énormément, j'ai commencé des tests, et j'ai deux observations :

- Comment écrire dans le <div> ?
 Je ne vois pas d'autre façon que innerHTML : d'autres idées ?
- Comment récupérer la taille du <div>?
 j'ai essayé des trucs du genre document.getElementById('CACHE').width mais cela ne fonctionne pas (width n'est pas une propriété de <div>). Quant à document.getElementById('CACHE').style.width, cela retourne (forcément) auto !
Aaargh !

mardi 7 mars 2006 à 12:37:56 | Re : Taille d'une chaine de caractere en pixel

mchab

bon, j'ai pas mal avancé  et pour l'instant pas besoin de div ni de calque !!

En fait j'utilise un input id="champaffich" pour la "réception" du texte , invisible, taille 1 caractere ou 0.
Au fur et a mesure de la saisie dans un input id="champsaisie", le champaffich s'agrandit. Il ne me reste plus qu'à récupérer sa largeur :


   // copie de la saisie vers le input d'affichage
   document.getElementById('champaffich').value = document.getElementById('champsaisie').value;
   // agrandir la taille du input champaffich' en fonction du nombre de caractères présents
   document.getElementById('champaffich').size=document.getElementById('champaffich').value.length;
   // recuperer la taille du input, et en pixel  !!
   taille=document.getElementById('champaffich').offsetWidth;
  ensuite il ne me reste plus qu'à le comparer avec une taille définie, et lancer une alerte du genre "attention dépassement"....

Bon maintenant je dois gérer ce que ça donne avec un changement de taille de police !!!!

mardi 7 mars 2006 à 12:44:00 | Re : Taille d'une chaine de caractere en pixel

PetoleTeam

Membre Club
Réponse acceptée !


Salut...

Bonne démarche, je répond à la question précédente quand même

var NETSCAPE = (navigator.appName == "Netscape");
var Obj = document.getElementById('div_');
if(
NETSCAPE)
  Larg= Obj.offsetWidth;
else
  Larg= Obj.scrollWidth;

;0)
vendredi 4 mai 2007 à 17:52:01 | Re : Taille d'une chaine de caractere en pixel

polemoss

Salut Dis moi mchab tu pourai mettre un peux plus de détail sur ton script stp car il m'interesserai beaucoup merci ;)
vendredi 11 mai 2007 à 14:35:48 | Re : Taille d'une chaine de caractere en pixel

mchab

Voici le contenu de ma page (copier coller la suite dans une page vierge html)
<!--
Rappel des faits : avoir un texte affiché qui ne dépasse pas un certaine largeur,
par exemple celle d'un calque ou d'un tableau dans lequel il sera affiché, avec au besoin un changement de taille de police.
Attention, les différentes définitions d'écran peuvent donner des résultats différents.
Prévoir donc une marge lors du test de la taille du champaffiché.

Par ailleurs, j'ai du réecrire mon script car il était devenu trop spécialisé par rapport à l'appli que j'ai développé, aussi je ne l'ai pas testé (pas le temps
en dehors d'IE 6. De toute façon, tout peut-être adapté selon vos propres besoins.

Il peut y avoir des discordances en fonction de la définition d'écran etc...
-->
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>controle taille chaine de caractere dans zone limitée</title>
<meta name="author" content="marc chabbert - 2006-2007">
<meta name="copyright" content="marc chabbert - 2006-2007">

<script language="javascript">
function testtaillechamp(){
//fonction qui sert à tester la taille de la chaine de caractere affichée
 alertetaille='';
 nom_champ_in=eval(document.getElementById('champdesaisie'));
 nom_champ_out=eval(document.getElementById('champdaffichage'));
 
 // récupérer dans une variable la taille maxi à ne pas dépasser
 tailleori=document.getElementById('zonetaillemaxi').style.width;
 tailleori=tailleori.substr(0,tailleori.length - 2);
 
 // copie du texte saisi vers le input d'affichage
 nom_champ_out.value = nom_champ_in.value;
 // agrandir la largeur (en carac) du champ d'affichage "champdaffichage" en fonction du nombre de caractères présents
 // dans le champ de saisie (sinon il y a 'défilement' du texte dans le champ "champdaffichage" qui ne change alors pas de taille
 nom_champ_out.size=nom_champ_out.value.length;
 // recuperer la nouvelle taille du input, et en pixel (il evolue au fur et a mesure de la saisie) !!
 taillechamp=nom_champ_out.offsetWidth-28;
 //ensuite il ne me reste plus qu'à le comparer avec la taille maxi, et lancer par exemple une alerte du genre "attention dépassement"....
 if (taillechamp>tailleori-1){
  alertetaille='oui';
  // enlever le dernier caractere
  nom_champ_in.value=nom_champ_in.value.substring(0,nom_champ_in.value.length -1);
  nom_champ_out.value = nom_champ_in.value;
  // reinitialiser la taille du champ d'affichage
  nom_champ_out.size=nom_champ_out.value.length;
 }
 return alertetaille;
}
function changetaille(){
// modifier la taille des caracteres et la taille maxi des champs
 nom_champ_out=eval(document.getElementById('champdaffichage'));
 // lire le select
 taillepolice=eval(Number(document.getElementById('taillepol').value));
 // redimensionner la police (affichage)
 nom_champ_out.style.fontSize=taillepolice;
 // apres un chgt de police il faut retourner vérifier la taille du champ affiché. Attention,
 // plusieurs caractères peuvent alors dépasser (en fait dans le script de test seul le dernier est supprimé)
 var alertetaille=testtaillechamp();
 if (alertetaille=="oui"){alert('ATTENTION : La saisie est trop longue '+taillechamp+' pixels au lieu de '+tailleori+' pixels maximum\rIl faudra probablement supprimer plusieurs caractères.');}
}

</script>
</head>
<body>
<!--
Au fur et a mesure de la saisie en taille standard dans le champ de saisie (id="champsaisie"), le champ d'affichage (id="champaffichage") s'agrandit. Il ne me reste plus qu'à récupérer sa largeur en pixel (offset) :
Attention je n'ai pas indiqué de name pour les champ, ni de balise <form> donc si vous voulez récupérer les champs par exemple en php, il faudra tout mettre dans un formulaire web et rajouter name="monnom" dans les champs désirés.

C'est dans ce 1er champ qu'est effectué la saisie:
a chaque keyup (remontée des touches du clavier la fonction qui teste la taille est lancée. Je pense que cela doit également (mieux?) fonctionner avec onpropertychange
-->

Saisie en "texte brut"<br />
<input id="champdesaisie" type="text" onKeyUp="var alertetaille=testtaillechamp();if (alertetaille=='oui'){alert('ATTENTION : La saisie est trop longue '+taillechamp+' pixels au lieu de '+tailleori+' pixels maximum');}">
<br />
Affichage en fonction de la taille choisie par l'utilisateur<br />
<!--
Le 2eme champ contiendra une copie du texte saisi, en tenant compte éventuellement d'un changement de police/taille
Il est donc en lecture seule (readonly) et se trouve a l'interieur d'une zone fixe (en fait un div de 100 px que j'affiche en jaune).
Pour continuer à bien voir cette zone jaune d'affichage maxi, la couleur du input est mise en transparent.
Attention, pour que la taille de la police par defaut colle avec l'affichage par defaut de IE, je les fixe en style.
-->
<div id="zonetaillemaxi"  style=" background-color:#FFFFCC;width:100px">
<input id="champdaffichage" type="text" readonly  style=" font-size: font:Arial;font-size:14px;border:0;background-color:transparent;">
</div>
Changer la taille de la police affichée dans le champ &quot;champdaffichage&quot; <br />
<select  size="1" id="taillepol" onChange="changetaille()" title="Sélectionnez la taille des caractères">
<!-- afficher les tailles - Toutes les tailles ne sont pas opérentes : dépend de la police -->
<option value="9">9</option>
<option value="10">10</option>
<option value="12">12</option>
<option value="14" selected>14</option>
<option value="16">16</option>
<option value="18">18</option>
<option value="24">24</option>
<option value="36">36</option>
</select>
<!-- Yo! -->
</body>
</html>

vendredi 11 mai 2007 à 15:00:35 | Re : Taille d'une chaine de caractere en pixel

polemoss

Salut, Merci de m'avoir répondu mais j'ai fini par trouvé tout seul, mais j'ai changé ton script car prendre la taille de l'input comme tu fais c'est pas bon car tu dis que la size est égale au length pour moi c'est éronné alors peux etre a tu modifié dans ton nouveau script je ne l'ai pas encore regarder en détaille mais d'apres ce que je vois j'ai trouver un peux plus simple, j'écris dans un span et ça marche nikel, la source : [code] Document sans nom champsaisie :
La taille de la div est de px
[/code] et dans ton span tu choisi une police et une taille voulu et sur n'importe quel écran ça sera pareil @ plus dis moi ce que tu en pense
vendredi 11 mai 2007 à 15:11:54 | Re : Taille d'une chaine de caractere en pixel

mchab

Essaye quand meme celui que je viens de poster, car j'y gere aussi le chgt de la taille et surtout (ce qui était mon but initial), une taille maxi (meme si lors d'un chgt de taille avec dépassement il reste encore à supprimer les carac. qui dépassent)

1 2

Cette discussion est classée dans : taille, chaine, champ, saisie, pixel


Répondre à ce message

Sujets en rapport avec ce message

Controle formulaire paranoiaque [ par ma2x ] Bonjour à tousIl m'a été demandé dans le cadre du boulot de mettre en oeuvre une interface de saisie de données soumis à des controles de toutes parts Changment automatique de champ HTML [ par cjed ] Salut,J'aurais voulu savoir s'il est possible d'avoir un changement automatique de champ HTML (champ de numéro d'ordre suivant) à chaque fin de saisie Taille d'une fenêtre [ par papillon1970 ] Bonjour, le cherche un script pour réduire la taille d'une fenêtre comme par exemple un popup. Mom besoin est: losque je clic sur un lien la nouvelle controle de saisie [ par bewyder ] si je ve controler par exemple la saisie de caracteres dans un textarea, vu que je sais pa commen limiter sa taille (ca serai plus facile !!), jappel Recherche sur plusieurs champ avec saisie automatique [ par stained ] Bonjour,Voila j'aimerai effectuer une saisie automatique sur plusieurs champs dépendant (Nom contact + Telephone Contact) chargé dans un tableau javas Background champ de saisie en rouge [ par talking ] Voilà bonjour tout le monde Donc voici ma question:J'aimerai savoir comment je peux faire en Javascript pour mettre le background d'un champ de saisie Formatage de chaine javascript [ par shaft107 ] slt à tousj'ai 4 petits pb,1) je voudrai en réalité changer le format de ma date après la saisie ex : l'utilisateur saisi 20092004 et moi je lui prése Passer des données entre champ select et champ texte [ par beepbep94 ] Bonjour à tous,Ceci est mon premier post chez vous.Voici mon problème:Est il possible de passer une donnée saisie dans un champ texte dans une pages H Contrôle de saisie d'un select dans formulaire PHP [ par sdsic01 ] Bonjour, J'ai un formulaire PHP avec des et je voudrais contrôler que l'utilisateur choisit bien qqchose dans la liste. j'ai commencé un test dans c Controler la saisie d'un champ [ par Dellys ] Bonjourj'ai dans mon formulair un champ "montant chéque" et je veut que la saisie soit avec un point pas avec une vérgule exemple  : 1222.25c'est vous


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,406 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales