Avatar billede Slettet bruger
02. februar 2005 - 01:08 Der er 7 kommentarer

Udskrivning af faktura på bestillingsside

Hej

Vi har problemer med at få udskrevet fakturaen tilsidst i javascript kodestykket nedenunder.

Fakturaen skal åbne i samme browser-vindue som den blev afsendt fra når der trykkes "send".

Præcisering:

function skrivFaktura(bestilling) {
....har vi problemer med.

Det skal udskrive valideringen af bestillingen ....
function ValiderBestilling(bestilling)

....men virker ikke.


Javascript koden og form koden er som følger:




<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>

<head>
<title>Bogbestilling</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script language="JavaScript" type="text/JavaScript">

function ialt ()
    {
    //Bog nr 1 defineres herunder
        var bog1 = (document.bestilling.erhvervscaseseo.value);
        var bog1resultat = bog1*"299";
    //Bog nr 2 defineres herunder
        var bog2 = (document.bestilling.erhvervsret.value);
        var bog2resultat = bog2*"150";   
    //Bog nr 3 defineres herunder
        var bog3 = (document.bestilling.informationsteknologi.value);
        var bog3resultat = bog3*"400";
    //Bog nr 4 defineres herunder
        var bog4 = (document.bestilling.matematik.value);
        var bog4resultat = bog4*"340";
    //Bog nr 5 defineres herunder
        var bog5 = (document.bestilling.afsatning.value);
        var bog5resultat = bog5*"230";
    //Bog nr 6 defineres herunder
        var bog6 = (document.bestilling.kompendiumeo.value);
        var bog6resultat = bog6*"175";
    //Bog nr 7 defineres herunder
        var bog7 = (document.bestilling.engelskgrammatik.value);
        var bog7resultat = bog7*"250";
      //Bog nr 8 defineres herunder
        var bog8 = (document.bestilling.io.value);
        var bog8resultat = bog8*"150";
 
     
        document.bestilling.resultat.value = bog1resultat+bog2resultat+bog3resultat+bog4resultat+bog5resultat+bog6resultat+bog7resultat+bog8resultat
    }

var DATO;
function DaTo(){
    DATO = new Date()
    dag = DATO.getDate()
    maaned = eval('DATO.getMonth()-0+1')
    aar = (DATO.getYear().length < 3)?"19" + DATO.getYear():DATO.getYear()
    time = DATO.getHours()
    minut = (DATO.getMinutes() < 10)?"0" + DATO.getMinutes():DATO.getMinutes()
    sekund = (DATO.getSeconds() < 10)?"0" + DATO.getSeconds():DATO.getSeconds()
    data = "" + dag + "/" + maaned + "-" + aar + " " + time + ":" + minut + ":" + sekund + "";
    document.getElementById("Dato").value = data;
    window.setTimeout(function() {DaTo()}, 1000);
}



function ValiderBestilling(bestilling)
{

var navn = document.bestilling.navn;
var adresse = document.bestilling.adresse;        <!-- javascript skelner mellem store og små bogstaver  -->
var postnummer = document.bestilling.postnummer; 
var by = document.bestilling.by;
var resultat = document.bestilling.resultat;


var ok = false;
var error;
var test;



while (!ok)
            {

ok = true;
error="";

    if (navn.value == "")
          {
        error = "Indtast navn";
        }
<!-- -------------------------------------------------------------  -->       
          if (adresse.value == "")
        {
        error = error + "\nIndtast adresse";
        }
<!-- -------------------------------------------------------------  -->       
        if (postnummer.value == "")
          {
        error = error + "\nIndtast postnummer";
        }
<!-- -------------------------------------------------------------  -->       
        if (isNaN(postnummer.value)==true)
          {
        error = error + "\nPostnummer skrives med tal";
        }
<!-- -------------------------------------------------------------  -->       
        else if (postnummer.value.length < 4)
        {
        error = error + "\nPostnummer skal være 4 cifre langt";
        }
<!-- -------------------------------------------------------------  -->       
        if (by.value == "")
          {
        error = error + "\nIndtast by";
        }
<!-- -------------------------------------------------------------  -->       
        if (resultat.value == "")
          {
        error = error + "\nVælg antal styk";
        }
<!-- -------------------------------------------------------------  -->       
        else if (isNaN(resultat.value)==true)
          {
        error = error + "\nIndtast kun tal";
        }
<!-- -------------------------------------------------------------  -->       

    if (error.length >0)
        {
        window.alert(error);
        ok = false;
        return test;   
        }       
    }   


function skrivFaktura(bestilling) {
    message = "<ul><h3>Faktura:</h3>"
    message += "<li><b>Navn: </b>" + bestilling.navn.value; <!--    message += "<li><b>Pris i alt:</b> kr. " + bestilling.resultat.value + "</ul>";
    message += "<li><b>Dato </b>" + DATO + "</ul>";
        var faktura = document.write(message);
}



window.onload = DaTo;

}


</script>
</head>

<body>



 
<form name="bestilling" onSubmit="return validate(this)";> <!-- javascript skelner mellem store og små bogstaver  -->

<INPUT type="hidden" name="dato" id="dato" value="DATO" size="20">

<br>
<b>Vælg antal styk</b>
<br><br>

<INPUT type="text" onChange="ialt()" align="right" id="erhvervscaseseo" name="erhvervscaseseo" size="1" maxlength="2">
<br><br>
<INPUT type="text" onChange="ialt()" align="right" id="erhvervsret" name="erhvervsret" size="1" maxlength="1">
<br><br>
<INPUT type="text" onChange="ialt()" align="right" id="informationsteknologi" name="informationsteknologi" size="1" maxlength="2">
<br><br>
<INPUT type="text" onChange="ialt()" align="right" id="matematik" name="matematik" size="1" maxlength="2">
<br><br>
<INPUT type="text" onChange="ialt()" align="right" id="afsatning" name="afsatning" size="1" maxlength="2">
<br><br>
<INPUT type="text" onChange="ialt()" align="right" id="kompendiumeo" name="kompendiumeo" size="1" maxlength="2">
<br><br>
<INPUT type="text" onChange="ialt()" align="right" id="engelskgrammatik" name="engelskgrammatik" size="1" maxlength="2">
<br><br>
<INPUT type="text" onChange="ialt()" align="right" id="io" name="io" size="1" maxlength="2">



<br><br>

<b>Forsendelse</b>

<br><br>

Navn
<br>
<INPUT name="navn" type="text" id="navn" size="22">

<br><br>

Adresse
<br>
<INPUT name="adresse" type="text" id="adresse" size="25">

<br><br>

Postnummer
<br>
<INPUT name="postnummer" type="text" id="postnummer" size="4" maxlength="4">

<br><br>
By
<br>
<INPUT name="by" type="text" id="by" size="17">



<br><br>
Pris i alt
<br>
<INPUT name="resultat" type="text" id="resultat" size="10" readonly="true">





<br><br>

<INPUT name="Send" type="submit" value="Send bestilling" onClick="ValiderBestilling();return false;">

<INPUT name="Reset" type="reset" id="Reset" value="Slet alt">

</form>


</body>
</html>
Avatar billede roenving Novice
02. februar 2005 - 02:00 #1
Jeg forstår ikke helt, hvaddet er du vil, men sådan som du har skrevet det, virker det, hvis du:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>

<head>
<title>Bogbestilling</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script language="JavaScript" type="text/JavaScript">

function ialt (){
    //Bog nr 1 defineres herunder
        var bog1 = +document.bestilling.erhvervscaseseo.value;
        var bog1resultat = bog1*299;
    //Bog nr 2 defineres herunder
        var bog2 = +document.bestilling.erhvervsret.value;
        var bog2resultat = bog2*150;
    //Bog nr 3 defineres herunder
        var bog3 = +document.bestilling.informationsteknologi.value;
        var bog3resultat = bog3*400;
    //Bog nr 4 defineres herunder
        var bog4 = +document.bestilling.matematik.value;
        var bog4resultat = bog4*340;
    //Bog nr 5 defineres herunder
        var bog5 = +document.bestilling.afsatning.value;
        var bog5resultat = bog5*230;
    //Bog nr 6 defineres herunder
        var bog6 = +document.bestilling.kompendiumeo.value;
        var bog6resultat = bog6*175;
    //Bog nr 7 defineres herunder
        var bog7 = +document.bestilling.engelskgrammatik.value;
        var bog7resultat = bog7*250;
      //Bog nr 8 defineres herunder
        var bog8 = document.bestilling.io.value;
        var bog8resultat = bog8*150;
       
        document.bestilling.resultat.value = bog1resultat+bog2resultat+bog3resultat+bog4resultat+bog5resultat+bog6resultat+bog7resultat+bog8resultat
    }

var DATO;
function DaTo(){
    DATO = new Date()
    dag = DATO.getDate()
    maaned = eval('DATO.getMonth()-0+1')
    aar = (3>DATO.getYear().length)?"19" + DATO.getYear():DATO.getYear()
    time = DATO.getHours()
    minut = (DATO.getMinutes() < 10)?"0" + DATO.getMinutes():DATO.getMinutes()
    sekund = (10>DATO.getSeconds())?"0" + DATO.getSeconds():DATO.getSeconds()
    data = "" + dag + "/" + maaned + "-" + aar + " " + time + ":" + minut + ":" + sekund + "";
    document.getElementById("Dato").value = data;
    window.setTimeout(function() {DaTo()}, 1000);
}

function ValiderBestilling(f){

var navn = f.navn;
var adresse = f.adresse;
var postnummer = f.postnummer; 
var by = f.by;
var resultat = f.resultat;

var error = "";
var fld = null;

    if (navn.value == ""){
        error += "\nIndtast navn";
        if(!fld)fld=navn;
    }
// -------------------------------------------------------------
    if (adresse.value == ""){
        error = error + "\nIndtast adresse";
        if(!fld)fld=adresse;
    }
// -------------------------------------------------------------
    if (postnummer.value == ""){
        error = error + "\nIndtast postnummer";
        if(!fld)fld=postnummer;
    }
// -------------------------------------------------------------
    if (isNaN(postnummer.value)==true){
        error = error + "\nPostnummer skrives med tal";
        if(!fld)fld=postnummer;
    }
// -------------------------------------------------------------
    if (postnummer.value.length < 4){
        error = error + "\nPostnummer skal være 4 cifre langt";
        if(!fld)fld=postnummer;
    }
// -------------------------------------------------------------
    if (by.value == ""){
        error = error + "\nIndtast by";
        if(!fld)fld=by;
    }
// -------------------------------------------------------------
    if (resultat.value == ""){
        error = error + "\nVælg antal styk";
        if(!fld)fld=f.erhvervscaseseo;
    }
// -------------------------------------------------------------
    if (isNaN(resultat.value)){
        error = error + "\nIndtast kun tal";
        if(!fld)fld=f.erhvervscaseseo;
    }
// -------------------------------------------------------------
    if (error.length >0){
        window.alert(error.substring(1));
        fld.focus();
        return false;
    }else skrivFaktura(f);
}   

function skrivFaktura(bestilling) {
    message = "<ul><h3>Faktura:</h3>"
    message += "<li><b>Navn: </b>" + bestilling.navn.value;
    message += "<li><b>Pris i alt:</b> kr. " + bestilling.resultat.value + "</ul>";
    message += "<li><b>Dato </b>" + DATO + "</ul>";
                        /*var faktura = */document.write(message);
}

window.onload = DaTo;

</script>
</head>

<body>
 
<form name="bestilling" onSubmit="return ValiderBestilling(this)";>

<INPUT type="hidden" name="dato" id="dato" value="DATO" size="20">

<br>
<b>Vælg antal styk</b>
<br><br>

<INPUT type="text" onChange="ialt()" align="right" id="erhvervscaseseo" name="erhvervscaseseo" size="1" maxlength="2">
<br><br>
<INPUT type="text" onChange="ialt()" align="right" id="erhvervsret" name="erhvervsret" size="1" maxlength="1">
<br><br>
<INPUT type="text" onChange="ialt()" align="right" id="informationsteknologi" name="informationsteknologi" size="1" maxlength="2">
<br><br>
<INPUT type="text" onChange="ialt()" align="right" id="matematik" name="matematik" size="1" maxlength="2">
<br><br>
<INPUT type="text" onChange="ialt()" align="right" id="afsatning" name="afsatning" size="1" maxlength="2">
<br><br>
<INPUT type="text" onChange="ialt()" align="right" id="kompendiumeo" name="kompendiumeo" size="1" maxlength="2">
<br><br>
<INPUT type="text" onChange="ialt()" align="right" id="engelskgrammatik" name="engelskgrammatik" size="1" maxlength="2">
<br><br>
<INPUT type="text" onChange="ialt()" align="right" id="io" name="io" size="1" maxlength="2">

<br><br>

<b>Forsendelse</b>

<br><br>

Navn
<br>
<INPUT name="navn" type="text" id="navn" size="22">

<br><br>

Adresse
<br>
<INPUT name="adresse" type="text" id="adresse" size="25">

<br><br>

Postnummer
<br>
<INPUT name="postnummer" type="text" id="postnummer" size="4" maxlength="4">

<br><br>
By
<br>
<INPUT name="by" type="text" id="by" size="17">

<br><br>
Pris i alt
<br>
<INPUT name="resultat" type="text" id="resultat" size="10" readonly="true">

<br><br>

<INPUT name="Send" type="submit" value="Send bestilling">

<INPUT name="Reset" type="reset" id="Reset" value="Slet alt">

</form>

</body>
</html>

-- men der er en hel del muligheder for at optimere mv. !-)
Avatar billede Slettet bruger
02. februar 2005 - 11:33 #2
function ValiderBestilling(f){

var navn = f.navn;
var adresse = f.adresse;
var postnummer = f.postnummer; 
var by = f.by;
var resultat = f.resultat;

......... f.navn refererer til ValiderBestilling(f) jf. "f" foran navn OG parentesen i ValiderBestilling()  ??

var error = "";
var fld = null;

...........hvorfor sættes variablen "fld" til at være "null" (skriver faktura ??)


// -------------------------------------------------------------
    if (by.value == ""){
        error = error + "\nIndtast by";
        if(!fld)fld=by;
    }
// -------------------------------------------------------------
    if (resultat.value == ""){
        error = error + "\nVælg antal styk";
        if(!fld)fld=f.erhvervscaseseo;
    }
// -------------------------------------------------------------
    if (isNaN(resultat.value)){
        error = error + "\nIndtast kun tal";
        if(!fld)fld=f.erhvervscaseseo;
    }
// -------------------------------------------------------------
   


if (error.length >0){
        window.alert(error.substring(1));
        fld.focus();
        return false;

..........Fejlmeddelese hvis:
          - Window.alert hvis error.substring er større end 1 ?
          - Hvad er substring ?

    }else skrivFaktura(f);

........... Skriver faktura hvis ingen error ?


Mvh
Avatar billede Slettet bruger
02. februar 2005 - 11:38 #3
// -------------------------------------------------------------
    if (by.value == ""){
        error = error + "\nIndtast by";
        if(!fld)fld=by;
    }
// -------------------------------------------------------------
    if (resultat.value == ""){
        error = error + "\nVælg antal styk";
        if(!fld)fld=f.erhvervscaseseo;
    }
// -------------------------------------------------------------
    if (isNaN(resultat.value)){
        error = error + "\nIndtast kun tal";
        if(!fld)fld=f.erhvervscaseseo;
    }
// -------------------------------------------------------------

Glemte lige at spørge:

if(!fld)fld=f.erhvervscaseseo;

.......Hvorfor vælges f.erhvervscaseseo og ikke en af de andre bøger til validering af resultatet?

if(!fld)fld=by;

........Hvorfor bruges ikke f.by

Mvh
Avatar billede roenving Novice
02. februar 2005 - 11:48 #4
f refererer til formen (jvf. this i kaldet !-)

fld initialiseres til null, så vi senere kan sætte den til det første felt, som indeholder fejl, så focus kan flyttes dertil ...

Fejlmeddelelsen kommer, hvis der er skrevet noget ind i error-variablen,

og .substring(1) bruges, fordi alle linjer startes med et linjeskift, som derfor skal slettes i starten ...

-- og ja, skriv faktura, hvis ingen fejl, men hvad med afsendelsen af bestillingen ?-)

f.erhvervscaseseo bruges, fordi det er det første felt ...

-- og det er jo faktisk f.by som bruges, jvf. din tildeling i starten:

by = f.by !o]
Avatar billede Slettet bruger
02. februar 2005 - 12:16 #5
<form name="bestilling" onSubmit="return validate(this)";>

.........Og "f" kunne i stedet være fx "form" eller "formf" alle de steder hvor det skal implementeres..







function skrivFaktura(f) {     
fremfor   
function skrivFaktura(bestilling) {

.........afsendelsen af bestillingen?





Fejlmeddelelsen kommer, hvis der er skrevet noget ind i error-variablen,

...........Dvs. indtastning af fx. kun 2 tal i postnummer hvor der forlanges 4  i selve HTML dokumentet i browseren







var by = f.by;
........tildeling i starten

if (by.value == ""){
  error = error + "\nIndtast by";
  if(!fld)fld=by;
  }
........ if fld=by    ??
Avatar billede roenving Novice
02. februar 2005 - 12:42 #6
1. Ja, bortset fra, at det ikke kan anbefales at bruge 'form', da det er reserveret i forbindelse med form-elementer ...

2. Det ser ikke ud som om, du sender kalorius, hvis du skriver fakturaen ?-)

3. for eksempel, ja !-)

4. Så er fld = by = f.by !o]
Avatar billede Slettet bruger
02. februar 2005 - 12:46 #7
2. Kalorius??



Mvh
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