Fermer un DIV onmouseout

Résolu
malik7934 Messages postés 1154 Date d'inscription mardi 9 septembre 2003 Statut Membre Dernière intervention 15 août 2009 - 28 juil. 2005 à 11:36
malik7934 Messages postés 1154 Date d'inscription mardi 9 septembre 2003 Statut Membre Dernière intervention 15 août 2009 - 1 août 2005 à 17:22
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

cs_bultez Messages postés 13616 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
28 juil. 2005 à 12:51
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]~
3
malik7934 Messages postés 1154 Date d'inscription mardi 9 septembre 2003 Statut Membre Dernière intervention 15 août 2009 17
1 août 2005 à 08:04
Merci pour ta proposition, je l'essaierai.

Pourquoi cela te semble-t-il pas vraiment judicieux??
0
malik7934 Messages postés 1154 Date d'inscription mardi 9 septembre 2003 Statut Membre Dernière intervention 15 août 2009 17
1 août 2005 à 11:45
Ca marche po . Bah, merci quand meme
0
cs_bultez Messages postés 13616 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
1 août 2005 à 11:57
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]~
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
malik7934 Messages postés 1154 Date d'inscription mardi 9 septembre 2003 Statut Membre Dernière intervention 15 août 2009 17
1 août 2005 à 13:14
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
0
malik7934 Messages postés 1154 Date d'inscription mardi 9 septembre 2003 Statut Membre Dernière intervention 15 août 2009 17
1 août 2005 à 13:35
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!
0
cs_bultez Messages postés 13616 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
1 août 2005 à 14:55
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]~
0
malik7934 Messages postés 1154 Date d'inscription mardi 9 septembre 2003 Statut Membre Dernière intervention 15 août 2009 17
1 août 2005 à 15:06
"==> 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
0
cs_bultez Messages postés 13616 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
1 août 2005 à 15:22
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]~
0
malik7934 Messages postés 1154 Date d'inscription mardi 9 septembre 2003 Statut Membre Dernière intervention 15 août 2009 17
1 août 2005 à 17:22
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!



++
0