begin process at 2010 02 10 08:06:17
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Formulaire

 > COMBOBOX DE TAILLE INFÈRIEUR À SON CONTENU

COMBOBOX DE TAILLE INFÈRIEUR À SON CONTENU


 Information sur la source

Note :
Aucune note
Catégorie :Formulaire Classé sous :combo, déroulante, taille Niveau :Initié Date de création :08/11/2004 Date de mise à jour :10/05/2007 12:42:45 Vu :8 245

Auteur : misterdarth

Ecrire un message privé
Commentaire sur cette source (5)
Ajouter un commentaire et/ou une note

 Description

Cliquez pour voir la capture en taille normale
Lors d'un de mes developpement, il m'etait nécessaire de caser des listes déroulantes dans un tableau. Malheureusement, le contenu des listes forçait la taille de mon tableau et, de ce fait, cassait l'esthetisme de mon site ( bouh :'( ).
Apres moulte recherche, je suis tombé sur un code trop spécifique pour l'utiliser à plusieurs reprises dans une meme page ( http://www.javascriptfr.com/code.aspx?ID=15939 ).
Apres une journée de travail, voici le résultat de mon bidouillage pour rendre ce code "dynamique"

Source

  • <script language="JavaScript" type="text/javascript">
  • // Tableaux contenant les éléments de la liste.
  • var Obj1Table;
  • Obj1Table= new Array();
  • Obj1Table[0]="http://phidels.com/";
  • Obj1Table[1]="http://www.codes-sources.com";
  • Obj1Table[2]="http://www.delphifr.com";
  • Obj1Table[3]="http://www.asp-irine.com";
  • Obj1Table[4]="http://msdn.microsoft.com/library";
  • Obj1Table[5]="http://www.asp-magazine.com";
  • Obj1Table[6]="http://devedge.netscape.com/";
  • Obj1Table[7]="http://www.w3.org";
  • Obj1Table[8]="http://www.laltruiste.com";
  • Obj1Table[9]="http://www.3dvf.com";
  • Obj1Table[10]="http://www.allapi.net";
  • Obj1Table[11]="http://www.wotsit.org";
  • Obj1Table[12]="http://therionweb.de/";
  • Obj1Table[13]="http://www.asp-php.net/";
  • Obj1Table[14]="http://phidels.com/";
  • var Obj2Table;
  • Obj2Table= new Array();
  • Obj2Table[0]="Marie-Louise Dupont";
  • Obj2Table[1]="Marie-Chantale Dupont";
  • Obj2Table[2]="Stéphane de la Brigandiere";
  • Obj2Table[3]="Jean-Martin du Chateau le Neuf";
  • Obj2Table[4]="John Fitzgerald Kennedy";
  • Obj2Table[5]="Machin avec un sacré nom à rallonge";
  • // Classe les listes par ordre alphabétique.
  • Obj1Table.sort();
  • Obj2Table.sort();
  • // Mise en sur brillance de l'élément survolé.
  • function RollOver()
  • {
  • var objet;
  • objet=event.srcElement;
  • objet.style.backgroundColor="highlight";
  • objet.style.borderWidth="1";
  • objet.style.borderStyle="dashed";
  • objet.style.borderColor="black";
  • objet.style.color="white";
  • }
  • // Retour à l'état normal de l'élément de la liste.
  • function RollOut()
  • {
  • var objet;
  • objet=event.srcElement;
  • objet.style.backgroundColor="white";
  • objet.style.borderWidth="0";
  • objet.style.color="black";
  • }
  • // Efface toutes les cellules du tableau.(Tous les éléments de la liste)
  • function EffacCell(h)
  • {
  • // Construction du nom de la table liste(i)
  • var liste = 'liste'+h
  • var e;
  • e=new Enumerator(eval(liste).rows);
  • for (;!e.atEnd();e.moveNext())
  • {
  • eval(liste).deleteRow(e.item().rowIndex);
  • }
  • }
  • // Affiche la liste lorsque l'on click sur la flèche.
  • function Deroule(MonDiv,N)
  • {
  • // Construit le nom du Div Obj(i)Cadre
  • var cadre = MonDiv.id+'Cadre';
  • // Construit le nom de la table javascript Obj(i)Table ( cf plus haut )
  • var MaTable = MonDiv.id+'Table';
  • // Construit le nom du bouton down(i)
  • var down = 'down'+N
  • // Construit le nom de la table dans laquelle le texte va s'afficher
  • var liste = 'liste'+N
  • var e, objet;
  • objet=event.srcElement; // Efface la liste pour éviter qu'elle se
  • EffacCell(N); // répète.
  • if (objet.id!=down)
  • { // Cache la liste si l'on a pas clicker
  • eval(cadre).style.visibility="hidden"; // sur la flèche.
  • }
  • else
  • {
  • for (i=0;i<MaTable.length;i++)
  • { // Crée tous les éléments de la liste.
  • var ligne, cellule;
  • ligne=eval(liste).insertRow(); // Insère une ligne dans le tableau.
  • cellule=ligne.insertCell(); // Insère une cellule dans la ligne.
  • with (cellule)
  • {
  • noWrap=true; // Définit les propriétés
  • style.cursor="default"; // et événements.
  • onmouseout=RollOut;
  • onmouseover=RollOver;
  • innerHTML=eval(MaTable)[i]; // Insère le texte dans la cellule.
  • }
  • }
  • eval(cadre).style.visibility="visible";
  • }
  • }
  • // Copie la ligne choisie dans la textbox et
  • // Ferme le cadre
  • function FermeCadre(MonDiv,N)
  • {
  • var cadre = MonDiv.id
  • // ATTENTION, le nom du FORM est fixe
  • var champ = 'document.form.'+MonDiv.id+'Champ'
  • var objet;
  • objet=event.srcElement;
  • eval(champ).value=objet.innerHTML;
  • eval(cadre).style.visibility="hidden";
  • }
  • </script>
  • </head>
  • <form name="form">
  • <table width="200" border=1>
  • <tr>
  • <td>
  • <%
  • ' Et en prime la fonction ASP pour construire les éléments nécessaire
  • function PetiteCombo(NumCombo,WidthTable,SizeTxt)
  • 'Numéro d'idetification de la combo
  • i= NumCombo
  • 'Taille de la table contenant la liste d'élément
  • TailleTable = WidthTable
  • Taille de la textbox
  • TailleTxt = SizeTxt
  • response.write "<div nowrap id=""Obj"&i&""" style=""border-width:2;border-style:inset;border-color:white;width:0;display:inline;"" onclick=""javascript:Deroule(this,"&i&");"">"&vbcrlf
  • response.write " <input type=""text"" readonly value="""" name=""Obj"&i&"CadreChamp"" size="&TailleTxt&""" >"&vbcrlf
  • response.write " <input id=""down"&i&""" type=""button"" value=""6"" style=""line-height:0;height:18;font-family:webdings;font-size:10;"">"&vbcrlf
  • response.write "</div><br>"&vbcrlf
  • response.write "<div id=""Obj"&i&"Cadre"" style=""position:absolute;height:100;visibility:hidden;background-color:white;border-width:1;border-style:solid;border-color:black;overflow-x:hidden;overflow-y:scroll;"" onclick=""javascript:FermeCadre(this,"&i&");"">"&vbcrlf
  • response.write " <table id=""liste"&i&""" width="&TailleTable&""" border=""0"" cellpadding=""0"" cellspacing=""0""></table>"&vbcrlf
  • response.write "</div>"
  • end function
  • 'Appelle de la fonction pour créer une premiere combo
  • PetiteCombo 1,260,20
  • %>
  • </td>
  • </tr>
  • <tr>
  • <td>
  • <%
  • 'Création d'une deuxieme Combo
  • PetiteCombo 2,260,20
  • %>
  • </td>
  • </tr>
  • </table>
  • <br>
  • <!-- Pour vérifier que ma combo passe bien au-dessus d'un texte
  • <br>BLABLA
  • <br>BLABLA
  • <br>BLABLA
  • <br>BLABLA
  • <br>BLABLA
  • <br>BLABLA
  • <br>BLABLA
  • <br>BLABLA
  • </form>
  • </body>
  • </html>
<script language="JavaScript" type="text/javascript">

// Tableaux contenant les éléments de la liste.
var Obj1Table;
Obj1Table= new Array();
Obj1Table[0]="http://phidels.com/";
Obj1Table[1]="http://www.codes-sources.com";
Obj1Table[2]="http://www.delphifr.com";
Obj1Table[3]="http://www.asp-irine.com";
Obj1Table[4]="http://msdn.microsoft.com/library";
Obj1Table[5]="http://www.asp-magazine.com";
Obj1Table[6]="http://devedge.netscape.com/";
Obj1Table[7]="http://www.w3.org";
Obj1Table[8]="http://www.laltruiste.com";
Obj1Table[9]="http://www.3dvf.com";
Obj1Table[10]="http://www.allapi.net";
Obj1Table[11]="http://www.wotsit.org";
Obj1Table[12]="http://therionweb.de/";
Obj1Table[13]="http://www.asp-php.net/";
Obj1Table[14]="http://phidels.com/";


var Obj2Table;
Obj2Table= new Array();
Obj2Table[0]="Marie-Louise Dupont";
Obj2Table[1]="Marie-Chantale Dupont";
Obj2Table[2]="Stéphane de la Brigandiere";
Obj2Table[3]="Jean-Martin du Chateau le Neuf";
Obj2Table[4]="John Fitzgerald Kennedy";
Obj2Table[5]="Machin avec un sacré nom à rallonge";



// Classe les listes par ordre alphabétique.
Obj1Table.sort();
Obj2Table.sort();


// Mise en sur brillance de l'élément survolé.
function RollOver()
{
    var objet;
    objet=event.srcElement;
    objet.style.backgroundColor="highlight";
    objet.style.borderWidth="1";
    objet.style.borderStyle="dashed";
    objet.style.borderColor="black";
    objet.style.color="white";
}

// Retour à l'état normal de l'élément de la liste.
function RollOut()
{
    var objet;
    objet=event.srcElement;
    objet.style.backgroundColor="white";
    objet.style.borderWidth="0";
    objet.style.color="black";
}

// Efface toutes les cellules du tableau.(Tous les éléments de la liste)
function EffacCell(h)
{
    // Construction du nom de la table liste(i)
    var liste = 'liste'+h

    var e;
    e=new Enumerator(eval(liste).rows);
    for (;!e.atEnd();e.moveNext())
    {
	eval(liste).deleteRow(e.item().rowIndex);
    }
}

// Affiche la liste lorsque l'on click sur la flèche.
function Deroule(MonDiv,N)
{
    // Construit le nom du Div Obj(i)Cadre
    var cadre = MonDiv.id+'Cadre';
    // Construit le nom de la table javascript Obj(i)Table ( cf plus haut )
    var MaTable = MonDiv.id+'Table';
    // Construit le nom du bouton down(i)
    var down = 'down'+N
    // Construit le nom de la table dans laquelle le texte va s'afficher
    var liste = 'liste'+N

    var e, objet;
    objet=event.srcElement;   // Efface la liste pour éviter qu'elle se
    EffacCell(N);       // répète.
    if (objet.id!=down)
    {   // Cache la liste si l'on a pas clicker
	eval(cadre).style.visibility="hidden";  // sur la flèche.
    }
    else
    {
	for (i=0;i<MaTable.length;i++)
	{    // Crée tous les éléments de la liste.
	    var ligne, cellule;
	    ligne=eval(liste).insertRow();     // Insère une ligne dans le tableau.
	    cellule=ligne.insertCell();    // Insère une cellule dans la ligne.
	    with (cellule)
	    {
		noWrap=true;       // Définit les propriétés
		style.cursor="default";     // et événements.
		onmouseout=RollOut;
		onmouseover=RollOver;
		innerHTML=eval(MaTable)[i];     // Insère le texte dans la cellule.
	    }
	}
	eval(cadre).style.visibility="visible";
    }
}

// Copie la ligne choisie dans la textbox et
// Ferme le cadre
function FermeCadre(MonDiv,N)
{
    var cadre = MonDiv.id
    // ATTENTION, le nom du FORM est fixe
    var champ = 'document.form.'+MonDiv.id+'Champ'
    var objet;
    objet=event.srcElement;
    eval(champ).value=objet.innerHTML;
 
    eval(cadre).style.visibility="hidden";
}

</script>


</head>

<form name="form">
    <table width="200" border=1>
	<tr>
	    <td>
<%
' Et en prime la fonction ASP pour construire les éléments nécessaire
		function PetiteCombo(NumCombo,WidthTable,SizeTxt)
		    'Numéro d'idetification de la combo
		    i= NumCombo
		    'Taille de la table contenant la liste d'élément
		    TailleTable = WidthTable
		    Taille de la textbox
		    TailleTxt = SizeTxt

		    response.write "<div nowrap id=""Obj"&i&""" style=""border-width:2;border-style:inset;border-color:white;width:0;display:inline;"" onclick=""javascript:Deroule(this,"&i&");"">"&vbcrlf
		    response.write "	<input type=""text"" readonly value="""" name=""Obj"&i&"CadreChamp"" size="&TailleTxt&""" >"&vbcrlf
		    response.write "	<input id=""down"&i&""" type=""button"" value=""6"" style=""line-height:0;height:18;font-family:webdings;font-size:10;"">"&vbcrlf
		    response.write "</div><br>"&vbcrlf
		    
		    response.write "<div id=""Obj"&i&"Cadre"" style=""position:absolute;height:100;visibility:hidden;background-color:white;border-width:1;border-style:solid;border-color:black;overflow-x:hidden;overflow-y:scroll;"" onclick=""javascript:FermeCadre(this,"&i&");"">"&vbcrlf
		    response.write "	<table id=""liste"&i&""" width="&TailleTable&""" border=""0"" cellpadding=""0"" cellspacing=""0""></table>"&vbcrlf
		    response.write "</div>"
		end function

		    'Appelle de la fonction pour créer une premiere combo
		PetiteCombo 1,260,20
%>
	    </td>
	</tr>
	<tr>
	    <td>
<%
		    'Création d'une deuxieme Combo
		PetiteCombo 2,260,20
%>

	    </td>
	</tr>
    </table>
<br>
<!-- Pour vérifier que ma combo passe bien au-dessus d'un texte

<br>BLABLA
<br>BLABLA
<br>BLABLA
<br>BLABLA
<br>BLABLA
<br>BLABLA
<br>BLABLA
<br>BLABLA

</form>
</body>
</html>

 Conclusion

Il ne reste plus qu'à créer les table dynamiquement et, probablement, à optimiser le code.
A noter que le nom du form est fixe ( dans cet exemple il s'appelle "form".
la fonction eval en javascript permet d'executer du javascript à partir d'une chaine de texte.


 Historique

10 mai 2007 12:42:45 :
ajout de mot clef

 Sources du même auteur

Source avec Zip FUNCTIONS DE CONTROLE DE SAISIE D'UN FORMULAIRE.

 Sources de la même categorie

Source avec Zip Source avec une capture CALCULS RAYNAUX V2 par Ali Bibi
Source avec Zip Source avec une capture VALIDATION D'UN FORMULAIRE par grarestephane
Source avec Zip Source avec une capture CHAT VIRTUEL par grarestephane
Source avec Zip Source avec une capture AJOUTER ET SUPPRIMER DES FICHIERS DANS UNE LISTE par grarestephane
Source avec Zip TEXTAREA : LIMITER LA LARGEUR ET LA HAUTEUR DU TEXTE SAISIE par vilfarfadet

 Sources en rapport avec celle ci

Source avec une capture TAILLEFONTE par tiger222
TAILLE D'UN <DIV> OU <SPAN> par Mokost
RÉCUPERER LA LARGEUR D'AFFICHAGE D'UN TEXTE par LocalStone
Source avec Zip OUVRIR DES POPUPS AU HASARD (TAILLE, PLACEMENT, BARRE DE MEN... par ndubien
IMAGES DANS UN TABLEAU AUTOMATIQUE par adelvian

Commentaires et avis

Commentaire de fg85 le 08/11/2004 23:31:02

Même en changeant/enlevant le code asp . Le script javascript n'est pas comptable avec mozilla , à mon avis l'erreur doit être toute simple, encore faut t'il la trouvé ;-)

Commentaire de misterdarth le 09/11/2004 01:23:27

Je n'ai pas testé avec mozilla mais seulement avec IE 6. Mais effectivement avec firefox le bouton apparait bizarrement et les fonctions semblent inactives.

Commentaire de misterdarth le 09/11/2004 01:54:57

Visiblement  c'est "event.srcElement;" qui pose probleme puisqu'existant sous explorer mais pas sous netscape. Il semble egalement que event soit implicit sous IE mais qu'il faille le declarer sous Netscape. Je jetterai un coup d'oeil demain à moins que quelqu'un puisse m'orienter sur la façon dont il faut gerer l'objet event.

Commentaire de coucou747 le 10/11/2004 16:03:15

c'est domage que ça ne passe pas avec mozilla...

Commentaire de misterdarth le 10/11/2004 16:44:04

Oui. Ce qui m'agace c'est que, sous netscape, event.srcElement doit pouvoir etre remplacer par event.target ( d'apres ce que j'ai compris ). Mais ça ne marche toujours malgres ces changements.

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

taille d'un SELECT [ par djog ] Bonjour &#224; tousJ'ai besoin de votre aideJe cherche &#224; cr&#233;er une liste d&#233;roulante sp&#233;ciale : La taille horizontale d'une liste d Besoin d'aide sur une liste déroulante [ par emeraudes ] bonjour, je voudrai savoir comment faire pour remplir des zones de text (en bleu) lorsque je selectionne un item (en rouge) d'une liste d&#233;roulan Dimensionner automatiquement un frame en fonction de la taille de la page contenue [ par MadM@tt ] Salut &#224; tous,voil&#224; j'utilise un frame qui m'affiche des pages pouvant varier en taille de l'une &#224; l'autreCe que je veux c'est que le fr pb d'affichage combo popup HELP ME [ par patinaroulette ] voici le probleme j'ai un bouton lorsque je clique dessus un popup s'ouvre j'ai aussi une combo box et diverses autres zones de texte lors de l'affich sélection d'une option identifiée -->liste déroulante [ par tousimages ] &nbsp;Mon objectif est de s&#233;lectionner automatique dans les listes d&#233;roulantes l'option pr&#233;alablement enregistr&#233;e.Je m'explique : Liste déroulante et onChange [ par sebalex ] Bonjour &#224; tous,J'ai dans le m&#234;me formulaire un Select reprenant les donn&#233;es d'une BD ainsi que plusieurs Input Type Texte. Je souhaite taille de page [ par overbrave ] Salut Dieu du code, j'ai chercher mais n'ai pas trouver...Coment peut on d&#233;finir la taille d'une page et quel reste a sa taille d&#233;fini?Je pa la taille d un bouton ? [ par mous95 ] Bonjour j ai 4 boutons mais qui ne sont pas de la mme taille car le lib&#233;l&#233; est different, j aimerai imposai une taille unilque aux quatres choisir l'element sélectionné par défaut dans une liste déroulante [ par nico_ayci ] salut &#224; tous ! je voudrais savoir s'il est possible en javascript de choisir l'element s&#233;lectionn&#233; par d&#233;faut dans une liste d&#23 taille zone de texte [ par jackrichard ] Bonjour a tousVoila j'ai une zone de texte dont je voudrais limiter le nombre de caract&#232;re si quelqu'un pourrait me dire comment faire avec un pe


Nos sponsors


Sondage...

Comparez les prix


HTC Magic

Entre 429€ et 429€

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
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,796 sec (3)

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