FAQ |
Kalender |
![]() |
#1 | ||
|
|||
Flitig postare
|
Jag har en AJAX-sökfunktion på en sida där sökresultatet uppdateras medans man skriver. Sökresultatet består av länkar men det krävs att man klickar två gånger på en länk för att något skall hända, både i IE och FF. Det är som att det DIV-element som innehåller länkarna måste få fokus innan någonting funkar. Om jag klickar i resultatdiven en gång och sedan på en länk så funkar det.
/Andreas |
||
![]() |
![]() |
![]() |
#2 | |||
|
||||
Flitig postare
|
Det skulle vara enklare om du ger info om vilken ajax-lösning du kör, även om jag inte tror att det är relaterat till ajax.
Det bästa vore om du kunde visa hur sidan ser ut, eller en länk till denna. |
|||
![]() |
![]() |
![]() |
#3 | ||
|
|||
Flitig postare
|
Såhär ser själva anropet från sidan ut. Denna kod fungerar och jag får ett sökresultat varje gång.
Finns det någon Javascript-metod för att "uppdatera" ett element. Alltså något man måste anropa efter att man har lagt till HTML-kod i sökresultat-DIVen för att webläsaren skall "hitta" den? Kod:
function search() { var searchterm = document.getElementById("searchfield").value; if(searchterm.length > 1) { if (window.XMLHttpRequest) { var xmlhttp=new XMLHttpRequest(); } else if (window.ActiveXObject) { var xmlhttp=new ActiveXObject('Microsoft.XMLHTTP'); } if (xmlhttp) { xmlhttp.onreadystatechange = function updatedesearchresult() { if (xmlhttp.readyState==4) { if (xmlhttp.status==200) { document.getElementById("res").innerHTML=xmlhttp.responseText; } } } xmlhttp.open("GET", "search.php?search=" + searchterm, true); xmlhttp.send(""); } } else { document.getElementById("ajres").innerHTML=''; } } |
||
![]() |
![]() |
![]() |
#4 | |||
|
||||
Flitig postare
|
Jadu, jag kan inte svara på varför det blir som det blir.
Var ligger focus efter sökningen? Söker du på onkeyup eller genom att någon klickar på en knapp? Om du inte söker på onkeyup kan du prova att skriva document.getElementById("res").focus(); efter innerHTML-raden. Botar inte källan till problemet, men hanterar antagligen symptomen. |
|||
![]() |
![]() |
![]() |
#5 | ||
|
|||
Supermoderator
|
Läste någonstans att innerHTML inte var att rekommendera. Är det i den kod du generar där som det blir fel?
__________________
Jonny Zetterström se.linkedin.com/in/jonnyz | bjz.se | sajthotellet.com | kalsongkungen.se | zretail.se | zetterstromnetworks.se | webbhotellsguide.se | ekonominyheter24.se | nyamobiltelefoner.se | gapskratt.se | antivirusguiden.se | jonny.nu |
||
![]() |
![]() |
![]() |
#6 | |||
|
||||
Flitig postare
|
Citat:
Det bästa är att använda createElement, append m.fl. för att uppdatera innehållet i en nod. andi: Glöm det jag sa om focus(), det är bara tänkt till form-element. |
|||
![]() |
![]() |
![]() |
#7 | ||
|
|||
Klarade millennium-buggen
|
Varför använder du inte ett färdigt bibliotek för att hantera ajax och de här grejerna? Du slipper en massa tänkbara felkällor iom att andra har löst problemen åt dig.
Scriptaculous + prototype kör jag med. Rekommenderas varmt. Just det du försöker lösa finns här: http://wiki.script.aculo.us/scriptaculous/...x.Autocompleter |
||
![]() |
![]() |
![]() |
#8 | ||
|
|||
Flitig postare
|
Citat:
|
||
![]() |
![]() |
![]() |
#9 | ||
|
|||
Flitig postare
|
Nu är det löst! Jag hade sökning på både onchange och onkeyup och då visste tydligen inte webläsaren om musen var nere eller uppe och det var väl därför jag var tvungen att klicka en gång först för att kunna få "upp" muspekaren..
Angående innerHTML kontra DOM så är det många som säger att man skall passa sig för innerHTML men jag har aldrig fått uppfattningen att det skulle vara instabilt och innerHTML implementeras ju mer enhetligt i de olika webläsarna än sådant som finns standardiserat. Det är ju också snabbare än DOM samt väldigt mycket lättare att implementera. Tack för alla snabba svar! |
||
![]() |
![]() |
Svara |
|
|