Avatar billede maxiz Nybegynder
11. juni 2009 - 20:25 Der er 7 kommentarer

multiple onkeyup ! flere javascript events på en gang!

Hej folkens. Mit problem er at min onkeyup event ikke kan håndtere flere funktioner ad gangen.

Her er 2 seperate events, som virker fint hver for sig på på samme side:


<input type="text" id="txt1" size="30" onkeyup="showResult_test(this.value)" />

<input type="text" id="txt2" size="30" onkeyup="showResult_test2(this.value);" />

-------------

Her er det input som jeg skal have til at virke:

<input type="text" id="txt1" size="30" onkeyup="showResult_test(this.value);showResult_test2(this.value)" />


--------------
Jeg har prøvet med at lave en funktion, som heller ikke virker:

<script type="text/javascript">
function funcCaller() {
showResult_mode(txt3.value);
showResult_iced(txt3.value);
}
</script>


Nogen der kan hjælpe ?
Avatar billede thesurfer Nybegynder
11. juni 2009 - 20:39 #1
Dette burde virke:

<input type="text" id="txt1" size="30" onkeyup="showResult_test(this.value);showResult_test2(this.value)" />

Og ellers kan du gøre sådan her:

<input type="text" id="txt1" size="30" onkeyup="funcCaller(this.value)" />

function funcCaller(v)
{
showResult_mode(v);
showResult_iced(v);
}


Jeg lagde mærke til at du bruger funktionsnavnene "showResult_test", "showResult_test2", "showResult_mode", "showResult_iced"..

Er det meningen at du skal bruge 4 forskellige funktioner/navne, eller har du (på et eller andet tidspunkt) ændret/rettet i koden?
Avatar billede maxiz Nybegynder
11. juni 2009 - 20:40 #2
ja det er rigtigt jeg rettede i koden :)
Avatar billede maxiz Nybegynder
11. juni 2009 - 20:44 #3
Desværre viser den også kun en af funktionerne her.
Andre forslag?
Avatar billede thesurfer Nybegynder
11. juni 2009 - 20:48 #4
Ja, smid lige et link til siden.. for du har gjort et eller andet forkert.. :)

Måske noget med koden i funktionerne.. som vi ikke kan se hvad indeholder.. :)
Avatar billede maxiz Nybegynder
11. juni 2009 - 21:33 #5
mange tak :) jeg har sendt det
Avatar billede thesurfer Nybegynder
12. juni 2009 - 03:45 #6
NOTE:

Koden indeholder ikke følsomme data, så jeg mener godt jeg kan lægge den ud, så de andre også kan se den.

Hvis du føler at koden ikke må offentliggøres, kontakte Snowball eller lars_pcworld.dk (via intern post):

http://www.eksperten.dk/profil/snowball

http://www.eksperten.dk/profil/lars_pcworld.dk

(PS: jeg kan ikke finde CoAdmin-listen)



------------------------


Jeg kan se at du er igang med denne tutorial:

http://www.w3schools.com/php/php_ajax_livesearch.asp

Forskellen er, at du har tilføjet 2 input felter, og kopieret JavaScript-koden (en omgang kode per inputfelt).

Det ser ud til at den sådan set genbruger xmlhttp's onreadystatechange, hvilket betyder at resultatet ender samme sted (samme div).


Jeg går ud fra, at du er klar over, at den laver samme opslag begge steder (hvis du trykker "a", slår den "a" op begge steder), fordi du bruger:

function funcCaller(v)
{
    showResult_mode(v);
    showResult_iced(v);
}


Hvis den skal lave opslagene, baseret på indholdet af dine textbox'e, kan det f.eks. se sådan ud:


function funcCaller(v)
{
    showResult_mode(document.getElementById("txt3").value);
    showResult_iced(document.getElementById("txt4").value);
}




Eksempel på JavaScript-koden med ændringer:



// Dette check behøver kun at blive foretaget 1 gang:
var xmlhttp_iced = GetXmlHttpObject();
var xmlhttp_mode = GetXmlHttpObject();



function showResult_iced(str)
{

    if (str.length==0)
    {
        document.getElementById("livesearch_iced").innerHTML="";
        document.getElementById("livesearch_iced").style.border="0px";
        return;
    }

    if (xmlhttp_iced==null)
    {
        alert ("Your browser does not support XML HTTP Request");
        return;
    }
    var url="livesearch-iced.php";
    url = "local-iced.asp"


    url=url+"?q="+str;
    url=url+"&sid="+Math.random();
    xmlhttp_iced.onreadystatechange=stateChanged_iced ;
    xmlhttp_iced.open("GET",url,true);
    xmlhttp_iced.send(null);
}

function stateChanged_iced()
{
    if (xmlhttp_iced.readyState==4)
    {
        document.getElementById("livesearch_iced").innerHTML=xmlhttp_iced.responseText;
        document.getElementById("livesearch_iced").style.border="1px solid #A5ACB2";
    }
}





function showResult_mode(str)
{
    if (str.length==0)
    {
        document.getElementById("livesearch_mode").innerHTML="";
        document.getElementById("livesearch_mode").style.border="0px";
        return;
    }

    if (xmlhttp_mode==null)
    {
        alert ("Your browser does not support XML HTTP Request");
        return;
    }
    var url="livesearch-mode.php";
    url = "local-mode.asp"


    url=url+"?q="+str;
    url=url+"&sid="+Math.random();
    xmlhttp_mode.onreadystatechange=stateChanged_mode ;
    xmlhttp_mode.open("GET",url,true);
    xmlhttp_mode.send(null);
}

function stateChanged_mode()
{
    if (xmlhttp_mode.readyState==4)
    {
        document.getElementById("livesearch_mode").innerHTML=xmlhttp_mode.responseText;
        document.getElementById("livesearch_mode").style.border="1px solid #A5ACB2";
    }
}





function GetXmlHttpObject()
{
    if (window.XMLHttpRequest)
    {
        // code for IE7+, Firefox, Chrome, Opera, Safari
        return new XMLHttpRequest();
    }
    if (window.ActiveXObject)
    {
        // code for IE6, IE5
        return new ActiveXObject("Microsoft.XMLHTTP");
    }
    return null;
}
Avatar billede thesurfer Nybegynder
12. juni 2009 - 05:44 #7
PS:

Da jeg programmerer i ASP og ikke PHP, har jeg indsat følgende linier


    url = "local-iced.asp"

og

    url = "local-mode.asp"

line under dine linier:

    var url="livesearch-iced.php";



Mine ASP-linier skal bare slettes.



Jeg havde så nogle dummy filer, der bare returnerede noget, så jeg kunne teste..
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester