02. august 2010 - 11:22Der er
12 kommentarer og 1 løsning
OnMouseOut virker ikke i autosuggest
Hej Eksperter Jeg har lavet et javescript, hvor man indtaster noget i et input felt som vha. ajax viser forslag under. De forslag er lavet som link, som når man trykker kommer forlsaget op i inputfeltet. Mit problem er jeg gerne vil have at popboksen med forslag skal forsvinder 3 sek. efter musen ikke er over input eller forslagene.
Hvordan får jeg javascript til at "hide" min popup box når musen ikke er over?
Jeg håbede på det kunne løses ved at sætte en OnMouseOut i <div>, men virker ikke.
<script type="text/javascript"> function showHint(str) { if (str.length==0) { return; } if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari xmlhttp=new XMLHttpRequest(); } else {// code for IE6, IE5 xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); } xmlhttp.onreadystatechange=function() { if (xmlhttp.readyState==4 && xmlhttp.status==200) { document.getElementById("theResults").innerHTML=xmlhttp.responseText; document.getElementById("theResults").style.left = getLeft() + "px"; document.getElementById("theResults").style.top = (getTop()+document.getElementById("AccountName").offsetHeight) + "px"; document.getElementById("theResults").style.width = document.getElementById("AccountName").offsetWidth; document.getElementById("theResults").style.visibility = "visible"; } } xmlhttp.open("GET","gethint.jsp?q="+str,true); xmlhttp.send(); } function value(value) { document.getElementById("AccountName").value = value; hideSuggestions(); } function getLeft() /*:int*/ { var oNode = document.getElementById("AccountName"); var iLeft = 0;
Denne side indeholder artikler med forskellige perspektiver på Identity & Access Management i private og offentlige organisationer. Artiklerne behandler aktuelle IAM-emner og leveres af producenter, rådgivere og implementeringspartnere.
Slettet bruger
02. august 2010 - 13:42#1
Hvorfor virker onmouseout ikke - det plejer det da : )
Når musen kommer over et link forsvinder boksen med det samme, selv om du ikke trykker eller noget. Hvis musen ikke er over boksen sker der heller ikke noget.
Jeg har skrevet sådan
<div id="theResults" onMouseOut="hide()" style="position:absolute;border:1px black solid;padding:2px;visibility: hidden;background: white"></div>
Synes godt om
Slettet bruger
02. august 2010 - 18:54#3
Ahh, ja - Dét er irriterende. - I DOM's sære verden forlader du faktisk den bagvedliggende div når du bevæger dig ind over linket - selvom du stadig ER inden i den..
Jeg plejer at løse dét problem, ved at mouseout'en på bag-diven, fjernes "forsinket" - og denne forsinkede fjerning aflyses ved onmouseover på elementer inden i (altså dine links).
nu har jeg aldrig brugt "cancelBubble" før men har skrevet sådan og får en fejl i firefox, men det er vist logisk nok da den ikke supporter den funktion.
I explorer er der ingen forskel. er min syntaks forkert?
function cancelBubble(ev) // Lad ikke en event "her" boble op til en parent's handler { ev = ev || window.event // iE ev.cancelBubble=true if (ev.stopPropagation) ev.stopPropagation() }
Men som sagt, jeg tror ikke det nytter her, da det er to forskellige events.
Du bruger to forskellige skjule/vise-metoder: display eller visibility - mon ikke det er det bøvler..
Engangsfunktion - har jeg ikke rigtig noget godt bud på.. - det skulle da lige være at xmlhttp er en global variabel (måske overlever noget fra kald til kald) ?
Gør dén lokal med: var xmlhttp=new XMLHttpRequest(); hhv. var xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
Men jeg er i tvivl, om det får konsekvenser for onreadystate-callback'en...
Skulle ikke ændre noget med xmlHTTP, nu kører det bare. Har dog tilføjet onmouseover="clearTimeout(fjernDivTimer);fjernDivTimer=null;" til mit div, da den ellers forsvandt når musen kun var over divet..
Må sige jeg har lært meget af denne problemstilling.
Send et svar og du får nogle MEGET velfortjente point. :) STORT TAK
Synes godt om
Slettet bruger
03. august 2010 - 10:22#13
Fedt. Velbekomme : )
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.