Fermer un DIV onmouseout

Résolu
Signaler
Messages postés
1154
Date d'inscription
mardi 9 septembre 2003
Statut
Membre
Dernière intervention
15 août 2009
-
Messages postés
1154
Date d'inscription
mardi 9 septembre 2003
Statut
Membre
Dernière intervention
15 août 2009
-
Hello,




J'ai un input type text dans lequel j'entre du blabla. En fonction de
ce blabla, un div s'ouvre juste au dessous de l'input avec des liens
dedans.




Je cherche à ce que le div soit caché quand la souris quitte la zone du
div (onmouseout). A la base, je me suis dit que la solution serait:



<style type= "text/css">

div.prop {

...

visibility:hidden;

}

</style>



<script type="text/javascript">



function AfficherleDIvEnFctDuBlabla(){...}


function comboOC(){


if (document.getElementById('res').style.visibility == "visible")


document.getElementById('res').style.visibility = "hidden";


}

</script>





AfficherleDIvEnFctDuBlabla(); onmouseout ="comboOC();">




Mais à peine je frôle de div, il se ferme et ce n'est bien sûr pas ce
que je veux! Je souhaite que le div se ferme UNIQUEMENT si je dépasse
les bords du div...



J'espère que je me suis assez bien expliqué, je suis vraiment une pive em javascript



HEELLPP!



Merci d'avance,

Malik7934

10 réponses

Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
36
Bonjour,
ça ne me semble pas très "judicieux" ??? mais...

exemple

texte

°donner le focus à un champ dans le div
°si déplacement dans le div => rendre visible
°ouvrir et fermer ne sont pas les bons termes
je dirais montrer / cacher

Cordialement. Bul. ~Site~~[mailto:marcelBultez@tiscali.fr Mail]~
Messages postés
1154
Date d'inscription
mardi 9 septembre 2003
Statut
Membre
Dernière intervention
15 août 2009
17
Merci pour ta proposition, je l'essaierai.

Pourquoi cela te semble-t-il pas vraiment judicieux??
Messages postés
1154
Date d'inscription
mardi 9 septembre 2003
Statut
Membre
Dernière intervention
15 août 2009
17
Ca marche po . Bah, merci quand meme
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
36
c'est malin de dire ça : "Ca marche po"
je suppose que cela veut dire que ça ne fonctionne pas ?
alors désolé, mais chez moi : aucun souci
donc si tu ne dis pas quelle erreur, à quelle ligne...
je suppose aussi que ton script n'est pas "tel quel"
celui que j'ai posté ( car il marche lui ), si tu ne nous
donne pas ton code, on ne pourra pas t'aider.

Cordialement. Bul. ~Site~~[mailto:marcelBultez@tiscali.fr Mail]~
Messages postés
1154
Date d'inscription
mardi 9 septembre 2003
Statut
Membre
Dernière intervention
15 août 2009
17
Hello,

100% d'accord avec toi sur ta remarque! Lorsque j'ai poste ma reponse toute subtile qu'elle puisse etre, j'ai enchaine sur la redaction d'un MP a ton adresse, puis j'ai laisse tomber pour x raisons (la premiere etant que j'ai des prob de compatibilite entre browsers)...

Soit, je mets donc le code en entier. C'est sur XMLHTTPREQUEST et ne fonctionne pas forcement chez tout le monde (pour des raisons qui m'echappent encore):

<html>
<head>
<title>prout</title>


<style type="text/css">


div.prop {
height: auto;
width: 150px;
overflow: auto;
border: 1px solid #666;
background-color: #ccc;
padding: 8px;
font-size: 10px;
font-family:verdana;
font-weight: bold;
visibility:hidden;
}


</style>


<script type="text/javascript">


var isWorking = false;

function getHTTPObject() {


var xmlhttp;

if (!xmlhttp && typeof XMLHttpRequest != 'undefined') {
try {
xmlhttp = new XMLHttpRequest();
xmlhttp.overrideMimeType("text/xml");
} catch (e) {
xmlhttp = false;
}
}
return xmlhttp;
}


var http = getHTTPObject();


function treatquery(){
if (!isWorking && http) {


ch = document.send.abr.value;


if (ch.length>2){
http.open("GET", "treatment.php?abr=" + escape(ch), true);
http.onreadystatechange = handleHttpResponse;
isWorking = true;
http.send(null);
}


if ((ch.length<3) && (document.getElementById('res').style.visibility == "visible"))
document.getElementById('res').style.visibility = "hidden";
}
}


function handleHttpResponse() { // traitement de la demande
if (http.readyState == 4) {
if (http.responseText.indexOf('invalid') == -1) {
var xmlDocument = http.responseXML;
var res = xmlDocument.getElementsByTagName('name').item(0).firstChild.data;
var elements = res.split(";");
var result = "Do you mean...
";
for (var i=0;i<elements.length;i++){
result = result + "" + elements[i] + "
";
}
document.getElementById('res').style.visibility = "visible";
document.getElementById('res').innerHTML = result;
isWorking = false;

}
}
}

function setQuery(ch){
document.getElementById('abr').value = ch;
}


</script>


</head>


<form name="send" style="display:inline; position: relative;">

&nbsp;&nbsp;

</form>

</html>

Voila. Pour faire tourner un exemple, il faut remplacer par exemple la partie

for (var i=0;i<elements.length;i++){
result = result + "" + elements[i] + "
";
}

par result = "<?xml version="1.0" standalone="yes" ><result><name>a;b;c;d<name></result>";

La, j'ai tout mis! Et mon but, bien sur, est toujours le meme: avoir le div des resultat visible que quand je me balade dessus ou, pourquoi pas, qu'il disparaisse uniquement si je clique en dehors de sa zone.

hehe...

Merci d'avance, Malik7934
Messages postés
1154
Date d'inscription
mardi 9 septembre 2003
Statut
Membre
Dernière intervention
15 août 2009
17
J'ai mis une betise... ce n'est pas result mais res qui doit prendre la valeur <xml> ...

<STRIKE>result = "<?xml version="1.0" standalone="yes" ><result><name> a;b;c;d< name></result
</STRIKE><STRIKE>>";</STRIKE>

res = "<?xml version="1.0" standalone="yes" ><result><name>a;b;c;d;<name></result>";

Sorry!
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
36
typique de nombreux échanges...

> j'arrive pa a fer<proposition de solution> sa march po<demande plus de détails> envoi d'un script complet, intestable,
où de nombreuses erreurs existent et le
plus grâve : où la solution proposée n'est
même pas mise en oeuvre...

qu'est-ce que vous voulez faire ???

Cordialement. Bul. ~Site~~[mailto:marcelBultez@tiscali.fr Mail]~
Messages postés
1154
Date d'inscription
mardi 9 septembre 2003
Statut
Membre
Dernière intervention
15 août 2009
17
"==> envoi d'un script complet, intestable, où de nombreuses erreurs existent et le
plus grâve : où la solution proposée n'est même pas mise en oeuvre..."

Bon, on rigole 5 minutes, mais la pas d'accord.

envoi d'un script complet: D'abord tu me dis "si tu ne nous donne pas ton code, on ne pourra pas t'aider" puis tu m'engueules car j'ai mis tout le code! Faut choisir un cote hein, pas contester les deux!

intestable: Mon code tourne chez moi, pas de problemes. Il est parfaitement testable, il suffit de faire un copy/paste et de modifier une ligne pour res (j'utilise en plus un script php pour construire la variable res. Je ne vais pas le mettre en plus ici n'est-ce pas).

de nombreuses erreurs existent: C'est du XMLHTTPREQUEST DONC cela ne fonctionne pas forcement chez tout le monde. Pour les nombreuses erreurs, j'attends ton listing! J'en ai pas de mon cote, etrange non!

la solution proposée n'est même pas mise en oeuvre: Pour la proposition proposee, je l'ai implementee, mais comme cela ne donnait rien, je l'ai retiree (j'ai eu tord?? J'aurais peut etre du la laisser dans mon code juste pour faire joli??)

qu'est-ce que vous voulez faire ???: peut etre reflechir avant d'ecrire! Comprend qui veut...

A bon entendeur, Malik7934
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
36
qu'est-ce que tu veux que je te dise...
tu as fais des erreurs en incorporant
la solution que je t'ai proposée,
comme elle n'est pas là...
appliquer "texto" mon exemple
et ça marchera.
Cordialement. Bul. ~Site~~[mailto:marcelBultez@tiscali.fr Mail]~
Messages postés
1154
Date d'inscription
mardi 9 septembre 2003
Statut
Membre
Dernière intervention
15 août 2009
17
Ta réponse répond effectivement à mon
problème sous ie. Je vais farfouiller pour savoir comment la faire
tourner sous Mozilla (que j'utilise avec préférence).



Merci bien pour ton aide!



++