IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

HTML Discussion :

Problème avec la saisie semi-automatique d'internet explorer


Sujet :

HTML

  1. #1
    Membre éclairé Avatar de haltabush
    Profil pro
    Développeur Web
    Inscrit en
    Avril 2005
    Messages
    726
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2005
    Messages : 726
    Points : 835
    Points
    835
    Par défaut Problème avec la saisie semi-automatique d'internet explorer
    Bonjour,
    J'ai une problématique quelque peu originale... En effet, je dois permettre à un utilisateur d'internet explorer d'avoir la saisie semi-automatique sur une page. Les réglages d'IE sont configurés pour permettre la saisie semi-auto, mais cela ne fonctionne pas sur la page requise (et seulement sur cette page, pas de problèmes pour les autres...)
    Cela vient probablement du fait que j'ai créé, pour cette page, une sorte de saisie semi-auto maison : une liste déroulante apparait au fur et à mesure qu'on tape (comme la saisie auto d'IE, mais avec des infos différentes ^^).
    Le problème est que cette page a des champs qui n'utilisent pas ma saisie auto, mais mon utilisateur a tout de même besoin d'utiliser celle fournie par internet explorer.

    Remarque : cela fonctionne sous Firefox, mais le site a été développé pour IE... je me vois mal lui dire de passer à Firefox pour se retrouver avec un site très moche...


    PS : je ne suis pas sûr (du tout!) d'avoir posté au bon endroit, désolé...

  2. #2
    Membre émérite Avatar de franculo_caoulene
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 880
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 880
    Points : 2 953
    Points
    2 953
    Par défaut
    Salut,

    Tu dois avoir un truc dans le genre qui traine : Normalement, il est à mettre uniquement sur le champs sur lequel tu souhaites interdire la saisie semi-automatique. Et pour faire ta propre saisie, tu dois forcément définir cet attribut dans le champs texte utilisé (si mes souvenirs sont bons).
    Les Cours et tutoriels JavaScript
    Penser à la recherche et au bouton

  3. #3
    Membre éclairé Avatar de haltabush
    Profil pro
    Développeur Web
    Inscrit en
    Avril 2005
    Messages
    726
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2005
    Messages : 726
    Points : 835
    Points
    835
    Par défaut
    MERCI!!!
    Je n'ai rien dans le genre qui traine, mais je vais essayer
    Si ca marche, je vais mettre le résolu, pas de problème

  4. #4
    Membre éclairé Avatar de haltabush
    Profil pro
    Développeur Web
    Inscrit en
    Avril 2005
    Messages
    726
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2005
    Messages : 726
    Points : 835
    Points
    835
    Par défaut
    Ca marche (parfaitement) sous Firefox, pas du tout sous IE :'( : je n'ai aucune saisie semi-automatique.
    Si vous avez une autre solution, je suis preneur!

    Edit : de fait, cela semble marcher, mais -très- mal : un champ qui était à autocomplete=off n'avais rien en saisie auto, mais quand je l'ai mis à "on" je me suis rendu compte qu'il avait enregistré un ":" dans la saisie auto. De fait, les données du champs sont de la forme "texte : texte", "texte" étant inséré via du JavaScript...
    Cependant, c'est le seul champ dont la saisie automatique fonctionne (et je n'en ai pas besoin pour ce champ... c'est balo)

  5. #5
    Membre émérite Avatar de franculo_caoulene
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 880
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 880
    Points : 2 953
    Points
    2 953
    Par défaut
    Si tu enlèves ta saisie automatique maison de la page, elle récupère un comportement normal?
    Les Cours et tutoriels JavaScript
    Penser à la recherche et au bouton

  6. #6
    Membre éclairé Avatar de haltabush
    Profil pro
    Développeur Web
    Inscrit en
    Avril 2005
    Messages
    726
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2005
    Messages : 726
    Points : 835
    Points
    835
    Par défaut
    Oui, mais...
    Je ne comprend pas ce qu'a à voir ma saisie auto personnalisé avec celle d'IE...
    Moi je créé juste une liste, invisible au début, qui s'affiche via javascript...

  7. #7
    Membre émérite Avatar de franculo_caoulene
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 880
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 880
    Points : 2 953
    Points
    2 953
    Par défaut
    Salut,

    Tout ce que je peux te dire est d'aller voir ce script qui fonctionne sous IE et saisie automatique : http://bb.public.free.fr/css/suggest/suggest.html

    Tu as mis à on tous les autres champs ou à off ta saisie maison? Car c'est la 2nde option qu'il faut choisir. Enfin je crois
    Les Cours et tutoriels JavaScript
    Penser à la recherche et au bouton

  8. #8
    Membre éclairé Avatar de haltabush
    Profil pro
    Développeur Web
    Inscrit en
    Avril 2005
    Messages
    726
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2005
    Messages : 726
    Points : 835
    Points
    835
    Par défaut
    Merci pour ce petit script, mais malheuresement cela ne marche pas...
    En effet, si la saisie est bien désactivée, si on rajoute un autre champ à "autocomplete=on", la saisie auto d'IE ne sera pas activée pour ce champ

    Citation Envoyé par franculo_caoulene
    Tu as mis à on tous les autres champs ou à off ta saisie maison? Car c'est la 2nde option qu'il faut choisir. Enfin je crois
    heu j'ai mis les 2
    je vais tester

  9. #9
    Membre éclairé Avatar de haltabush
    Profil pro
    Développeur Web
    Inscrit en
    Avril 2005
    Messages
    726
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2005
    Messages : 726
    Points : 835
    Points
    835
    Par défaut
    Mmh...
    Ca ne change pas grand chose
    La saise semi-auto fonctionne à moitié, ca a un comportement très bizare...
    En gros, j'ai ajouté au script que tu m'a donné 1 champ texte nommé "qsdf", et un submit.
    Lorsque je mets les 2 (le 1er champ, celui d'origine, à autocomplete="off" et 'lautre à autocomplete="on") : tant que je ne choisi pas une valeur dans la saisie semi-auto générée par le JS, la saisie semi auto d'IE fonctionne pour le 2ème champ. Ensuite, elle ne fonctionne plus?!

    edit : j'oubliais, le fait de mettre que 1 autocomplete à les résultats suivants :
    - en mettre 1 à on : saisie semi-auto partout (mais pas d'enregistrement des valeurs écrite par JavaScript)
    - mettre l'autre à off : ca fonctionne, tant qu'on ne remplit pas le chmaps à saisie automatique

    RE edit : J'AIME PAS IE !

  10. #10
    Membre éclairé Avatar de haltabush
    Profil pro
    Développeur Web
    Inscrit en
    Avril 2005
    Messages
    726
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2005
    Messages : 726
    Points : 835
    Points
    835
    Par défaut
    Personne d'autre n'a d'idée pour conjurer la malédiction d'IE?
    En tout cas, merci à Franculo_caoulene...

  11. #11
    Membre éclairé Avatar de haltabush
    Profil pro
    Développeur Web
    Inscrit en
    Avril 2005
    Messages
    726
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2005
    Messages : 726
    Points : 835
    Points
    835
    Par défaut
    Précision :
    En fait, la saisie semi-automatique est bien activé/désactivée grace à autocomplete, même avec IE.
    Le problème est dans l'enregistrement de nouvelles valeurs : lorsque je valide mon formulaire, il ne me sauvegarde pas les données que j'ai remplies dans la saisie automatiques?????

    Edit : A votre avis, il y a des chances pour qu'il ne s'agisse que d'un bug local, du à mon ie?

  12. #12
    Membre émérite Avatar de franculo_caoulene
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 880
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 880
    Points : 2 953
    Points
    2 953
    Par défaut
    Je ne pense pas que ce soit un bug IE mais plutôt un bug du programmeur
    Sans code on ne peut que deviner ce que tu fais, à défaut de le constater, et tu n'as pas été très généreux de ce coté là.
    Les Cours et tutoriels JavaScript
    Penser à la recherche et au bouton

  13. #13
    Membre éclairé Avatar de haltabush
    Profil pro
    Développeur Web
    Inscrit en
    Avril 2005
    Messages
    726
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2005
    Messages : 726
    Points : 835
    Points
    835
    Par défaut
    Vous voulez du code? hem... soit!!!!!! (bon courage...)
    (j'ai changé d'avis, je ne vais pas mettre toute la page...)
    Exemple de champ de saisie auto maison :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    	<input type="hidden" name="client" id="client" value="<? if (isset($_GET['tmp_client'])){echo $_GET['tmp_client'];}?>"/>
    	<input id="nom_client" name="nom_client" autocomplete="off" type="text" onKeyUp="Liste.Affiche();" value="<?      if (isset($_GET['nom_client'])){echo $_GET['nom_client'];}?>" style="position:absolute;top:35px;left:220px;width:350px;height:22px;z-index:3;"/>
    		<br />
    		<script type="text/javascript">
                            Liste.Ecrire();
                            Liste.Check();
                    </script>

    Champs avec saisie auto normale :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input autocomplete="on" name="validite" id="validite" type="text" maxlength="10" size="10"/>

    Ma librairie JS (bon là, il faut du courage quand même )


    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
    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';
    }

  14. #14
    Membre émérite Avatar de franculo_caoulene
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 880
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 880
    Points : 2 953
    Points
    2 953
    Par défaut
    Ton problème est sur validite ou ta saisie maison? Car tout ton JS concerne la saisie maison.

    De toute façon où que soit ton problème:
    1) Que donne une alert de la valeur du champ incriminé au moment de la soumission du formulaire?
    2) Que donne echo de cette même valeur en php au moment de l'enregistrement (enfin après la soumission du formulaire)?
    Les Cours et tutoriels JavaScript
    Penser à la recherche et au bouton

  15. #15
    Membre éclairé Avatar de haltabush
    Profil pro
    Développeur Web
    Inscrit en
    Avril 2005
    Messages
    726
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2005
    Messages : 726
    Points : 835
    Points
    835
    Par défaut
    Je n'ai pas de problèmes avec la soumission du formulaire : il me retourne bien les bonnes valeurs (il n'a pas de problème à enregistrer les valeurs dans la BD).
    Le problème ne porte pas sur la saisie maison, mais bien sur la saisie d'internet explorer. Peut-être que je n'ai pas été assez clair quand je parlais d'enregistrement dans la saisie semi-automatique : développons...
    Lorsqu'on valide un formulaire, IE enregistre les données envoyées via un champ texte afin de pouvoir ensuite les proposer via la saisie semi-automatique. Or, dans mon cas, c'est cet enregistrement qui ne semble pas fonctionner (ni sur mon poste, ni sur celui de mes collègues... sauf si on change de navigateur )

Discussions similaires

  1. Saisie semi-automatique a partir d'une BD avec textbox
    Par dalinho84 dans le forum VB.NET
    Réponses: 4
    Dernier message: 29/05/2013, 03h16
  2. [XL-2010] Liste deroulante avec saisie semi automatique
    Par Niko77 dans le forum Conception
    Réponses: 2
    Dernier message: 16/05/2013, 13h18
  3. [XL-2003] liste déroulante avec saisie semi automatique
    Par ghrab dans le forum Excel
    Réponses: 1
    Dernier message: 17/11/2011, 18h09
  4. Textbox de recherche avec saisie semi-automatique.
    Par arnold95 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 29/11/2007, 20h55
  5. DropDownList avec saisie semi-automatique
    Par Poussy-Puce dans le forum ASP.NET
    Réponses: 1
    Dernier message: 05/06/2007, 16h53

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo