1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160
| /*
Remarque :
- la liste javascript est un tableau qui existe tout le temps
- la liste HTML est crée, affichée, supprimée à partir de la liste javascript
- besoin de deux identifant en paramètres pour le retour des valeurs :
- un identifiant pour retourner la valeur (id_valeur)
- un identifiant qui contient le texte entré et pour retourner le texte (id_texte)
*/
//Création d'un objet javascript de type liste déroulante
function CreerListe(id_liste, nom_liste, hauteur_liste, largeur_liste, id_valeur, id_texte, formulaire) {
this.id = id_liste;
this.nom = nom_liste;
this.hauteur = hauteur_liste;
this.largeur = largeur_liste
this.id_valeur = id_valeur;
this.id_texte = id_texte;
this.search = "";
this.nb = 0;
this.Add = AjouterItem;
this.Ecrire = EcrireListe;
this.Actualise = ActualiseListe;
this.Check = CheckListe;
this.Lien = LienListe;
this.Affiche = AfficheListe;
this.Masque = MasqueListe;
// this.nom_form = formulaire;
//tableau des noeuds de la liste
this.nodes = new Array();
this.obj = id_liste + "Object";
eval(this.obj + "=this");
return this;
}
//Création d'un noeud qui va contenir la valeur et le texte
function CreerNoeud(valeur, texte){
this.valeur = valeur;
this.texte = texte;
}
//Correspond à la fonction Add, ajout d'un élément à la liste javascript
function AjouterItem(valeur, texte){
//ajout à la fin du tableau d'un noeud contenant une valeur et un texte
this.nodes.push(new CreerNoeud(valeur, texte));
this.nb++;
}
//Méthode qui écrit/crée la liste HTML, une liste vide pour l'instant
function EcrireListe() {
var champ_texte = document.getElementById(this.id_texte);
//les positions du champs texte sont récupéré
var posX = (parseInt(champ_texte.style.top)+parseInt(champ_texte.style.height))+'px';
var posY = champ_texte.style.left;
var txt = '<div style="position:absolute;top:'+posX+';left:'+posY+';z-index:100;">';
txt +='<select id="';
if (document.layers) {
txt += this.id+"\" name=\""+this.nom+"\" size=\""+this.hauteur+"\" onclick=\""+this.obj+".Lien();\">";
} else {
txt += this.id+'" name="'+this.nom+'" size="'+this.hauteur+'" style="width:'+this.largeur+';display:none" onclick="'+this.obj+'.Lien();">';
}
txt+="</select><div>";
document.write(txt);
}
//Actualise automatiquement la liste HTML
function CheckListe(){
this.Actualise();
//appel automatique de la fonction CheckListe par l'intermédiaire de this.obj.Check()
if (document.layers) {
setTimeout(this.obj+".Check()", 1001)
} else {
setTimeout(this.obj+".Check()", 100)
}
}
//Actualise la liste HTML en fonction de contenu du du champ texte
function ActualiseListe() {
//récupération de la liste HTML
listeaux = document.getElementById(this.id);
//récupération de l'élement HTML qui contient le texte entré par l'utilisateur
champaux = document.getElementById(this.id_texte).value;
if (champaux!=this.search) {
this.search=champaux;
//la longueur de la liste HTML est remise à zéro
listeaux.options.length = 0;
//parcours de la liste javascript et création de la liste HTML
for (var i=0; i<this.nb; i++) {
//si le texte de la liste javascript commence par la chaine champaux, on crée un élément pour la liste HTML
if ( this.nodes[i].texte.substring(0,champaux.length).toUpperCase()==champaux.toUpperCase() ) {
var o = new Option(this.nodes[i].texte, this.nodes[i].valeur);
listeaux.options[listeaux.options.length] = o;
}
}
//affectation des attributs à la liste (marche pas sous IE6)
liste_option = document.getElementById(this.id).getElementsByTagName('option');
for (i=0; i<liste_option.length; i++){
liste_option[i].onmouseover = RollOver;
liste_option[i].onmouseout = RollOut;
}
}
}
//envoie de la sélection de l'utiliateur dans les deux éléments HTML id_valeur et id_texte
function LienListe(){
//récupération de la liste HTML
listeaux = document.getElementById(this.id);
//récupération de l'élément HTML id_valeur
valaux = document.getElementById(this.id_valeur);
//récupération de l'élément HTML id_texte
champaux = document.getElementById(this.id_texte);
//indice sélectionné dans la liste HTML
i = listeaux.selectedIndex;
//affectation des champs value et text
valaux.value = listeaux.options[i].value;
champaux.value = listeaux.options[i].text;
//Modif pour l'ajotu de contrat :
if (champaux.name=="nom_client" && valaux.name=="client" && this.nom=="liste_client"){
RemplirContacts();
}
else{
if (champaux.name=="nom_mannequin" && valaux.name=="mannequin" && this.nom=="liste_mann"){
fctTestEnfant1();
this.Masque();
}
else{
//on masque la liste HTML après la sélection
this.Masque();
}
}
}
//Affichage de la liste HTML
function AfficheListe(){
//récupération de la liste HTML
listeaux = document.getElementById(this.id);
//on affiche la liste si elle contient au moins 1 valeur
if(listeaux.options.length > 0){
listeaux.style.zIndex=5;
listeaux.style.display = "block";
}else{
this.Masque();
}
}
//Masquage de la liste HTML
function MasqueListe(){
//récupération de la liste déroulante
listeaux = document.getElementById(this.id);
//si la liste n'est pas déja masquée, on la masque
if(listeaux.style.display == "block"){
listeaux.style.display = "none";
}
}
// coloration au passage de la souris
function RollOver() {
this.style.backgroundColor = '#000000';
this.style.color = '#FFFFFF';
}
// retour à l'état normal
function RollOut() {
this.style.backgroundColor = '#FFFFFF';
this.style.color = '#000000';
} |
Partager