Avatar billede thissel Nybegynder
20. august 2003 - 13:57 Der er 9 kommentarer og
1 løsning

Overførsel af data fra én side til en ny.

På min hjemmeside har jeg en javascriptfunktion i en formular, der automatisk udregner det samlede beløb efter indtastning af antal enheder. Det udregnede beløb vil jeg også gerne vise på den efterfølgende "tak for din bestilling"-side. Hvordan kan dette lade sig gøre? Jeg er ikke særlig meget inde i javscript, men webhotellet understøtter desværre hverken php eller databaser. (Kom ikke med forslag om at jeg bare skal skifte webhotel)

Koden til den nuværende funktion ser således ud:

<SCRIPT language="JavaScript">
<!--

var orderPlaced = false;


function exists(userEntry) {
  var aCharExists = 0;
  var entry = userEntry;

  if (entry) {
    for (var i=0; i<entry.length; i++) {
      //spaces don't count as "existence"
      if (entry.charAt(i) != " ") {
        aCharExists = 1;
      }
    }
  }
  if (!aCharExists) {
    return 0;
  }
  return ;
}


function isANumber(number) {
  answer = 1;

  if (!parseFloat(number)) {
    //the first digit wasn't numeric
    answer = 0;
  } else {
    //the first digit was numeric, so check the rest
    for (var i=0; i<number.length; i++) {
      if ((number.charAt(i) != "0")
        && (!parseFloat(number.charAt(i)))) {
          answer = 0;
          break;
      }
    }
  }
  if (answer == 1) {
    orderPlaced = true;
  }
  return answer;
}

function calcTotal() {
  document.orderForm.totalPrice.value =
    (document.orderForm.AntalKuverter.value * 999 );
}

</SCRIPT>

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

<INPUT NAME="AntalKuverter" VALUE="" tabindex="1" SIZE=2
  onChange="if(this.value) {
    if(!(isANumber(this.value))) {
      alert('Indtast venligst et nummer mellem 10 og 700.');
      this.focus();
    } else {
      calcTotal(calcTotal.value);
    }
  }">
  (min 10 - max 700)</p>
<p>alt inkl. moms
  <input name="totalPrice" READONLY SIZE=10 tabindex="2"
  onChange="if (orderPlaced == true) {
    alert('Total fee is a calculated field.');
    calculateTax(calcTotal.value);
  }">
Avatar billede roenving Novice
20. august 2003 - 14:01 #1
Smid værdien (evt. værdierne !-) ind i en cookie, før kaldet til Tak-siden, og hent dem der onload:

Disse funktioner er de generiske:

<script language="javascript" type="text/javascript">
function skrivCookie(name,value,expTime,path){//Tid i dage
    switch(skrivCookie.arguments.length){
        case 1,2:
            var expTime = 0;
            var path = "/";
        case 3:
            var path = "/";
    }
    var exp = new Date().getTime()+expTime*24*60*60*1000;
    exp = new Date(exp).toGMTString();
    var cook = name + " = " + escape(value) + ";expires=" + exp + ";path=" + path;
    document.cookie = cook;
}
function hentCookie(name){
    if (document.cookie){
        var n = document.cookie.indexOf(name+"=");
        if (n>-1){
            var val = document.cookie.substring(n+name.length+1);
            n = val.indexOf(";");
            if(n>-1)val=val.substring(0,n);
            return unescape(val);
        }
    }
}
</script>
Avatar billede thissel Nybegynder
20. august 2003 - 14:13 #2
Tak for det hurtige svar :) Som jeg skriver i spørgsmålet er jeg dog meget lidt inde i javascript, så du bliver simpelthen nødt til at skære ud i pap hvilken kode der skal hvorhen og hvilke variabler der skal ændres for at få det til at virke med min side.
Avatar billede roenving Novice
20. august 2003 - 14:24 #3
Den første funktion sætter du ind i script-tagget sammen med det du ellers har -- først eller sidst !-)

function skrivCookie(name,value,expTime,path){//Tid i dage
    switch(skrivCookie.arguments.length){
        case 1,2:
            var expTime = 0;
            var path = "/";
        case 3:
            var path = "/";
    }
    var exp = new Date().getTime()+expTime*24*60*60*1000;
    exp = new Date(exp).toGMTString();
    var cook = name + " = " + escape(value) + ";expires=" + exp + ";path=" + path;
    document.cookie = cook;
}

På den knap (eller link), som sender brugerne videre, sætter du dette ind:

onclick="skrivCookie('totalPrice',document.forms[0].totalPrice.value);"

-- I Tak-documentet sætter du den anden funktion ind:

<script language="javascript" type="text/javascript">
function hentCookie(name){
    if (document.cookie){
        var n = document.cookie.indexOf(name+"=");
        if (n>-1){
            var val = document.cookie.substring(n+name.length+1);
            n = val.indexOf(";");
            if(n>-1)val=val.substring(0,n);
            return unescape(val);
        }
    }
}
</script>

Og så i body:

<body onload="document.forms[0].totalPrice.value=hentCookie('totalPrice');"

-- forudsat at du har een form på begge dokumenter og du har et felt, som hedder totalPrice til værdien !-)
Avatar billede thissel Nybegynder
20. august 2003 - 15:02 #4
Tusind tak. Det var lige hvad jeg skulle bruge.
Desværre kan jeg ikke få det til at virke :(
I feltet totalPrice på tak-siden står der "undefined" som om at der ikke er skrevet noget i cookien... Jeg har tjecket det hele igennem, men kan ik finde nogle fejl.
Avatar billede thissel Nybegynder
20. august 2003 - 15:04 #5
Skal formname sættes til noget bestemt?
Avatar billede thissel Nybegynder
20. august 2003 - 15:37 #6
Jeg har lavet denne simple testside, men jeg kan stadig ik få den til at genere en cookie. Jeg har tjecket i min cookie-folder....

<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<SCRIPT language="JavaScript">
<!--

function skrivCookie(name,value,expTime,path){//Tid i dage
    switch(skrivCookie.arguments.length){
        case 1,2:
            var expTime = 0;
            var path = "/";
        case 3:
            var path = "/";
    }
    var exp = new Date().getTime()+expTime*24*60*60*1000;
    exp = new Date(exp).toGMTString();
    var cook = name + " = " + escape(value) + ";expires=" + exp + ";path=" + path;
    document.cookie = cook;
}


</SCRIPT>
</head>

<body bgcolor="#FFFFFF" text="#000000">
<form name="orderForm" action="http://scripts.scannet.dk/form2mail.asp" method="post">
                 
  <p>
    <input type="hidden" name="redirect" value="http://www.komplettotal.dk/julefrokost/tak.htm">
    <input type="hidden" name="subject" value="Bestilling">
    <input type="hidden" name="recipient" value="this@mail.dk">
    <input type="hidden" name="return_link_url" value="http://www.mitdomæne.dk/tak.htm">
    <input type="text" name="totalPrice">
    <input type="submit" value="Send" name="submit" tabindex="11" onclick="skrivCookie('totalPrice',document.forms[0].totalPrice.value);">
</form>
</body>
</html>
Avatar billede roenving Novice
20. august 2003 - 16:09 #7
Det skal åbenbart være:

function skrivCookie(name,value,expTime,path){//Tid i dage
    switch(skrivCookie.arguments.length){
        case 1:
            var expTime = 0;
            var path = "/";
        case 2:
            var expTime = 0;
            var path = "/";
        case 3:
            var path = "/";
    }
    var exp = new Date().getTime()+expTime*24*60*60*1000;
    exp = new Date(exp).toGMTString();
    var cook = name + " = " + escape(value) + ";expires=" + exp + ";path=" + path;
    document.cookie = cook;
}


og:

    <input type="submit" value="Send" name="submit" tabindex="11" onclick="skrivCookie('totalPrice',document.forms[0].totalPrice.value,1);">
Avatar billede thissel Nybegynder
20. august 2003 - 17:10 #8
Så virker det!

Du har fortjent de 100 point og lidt til ;)
Kom med et svar, så får du pointene...

Endnu engang tak for den store hjælp. Det er sjældent man får så hurtig og effektiv hjælp.
Avatar billede roenving Novice
20. august 2003 - 17:13 #9
Velbekomme '-)
Avatar billede roenving Novice
20. august 2003 - 17:37 #10
-- og tak for points;~}
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