18. august 2006 - 10:41Der er
12 kommentarer og 1 løsning
Print kun udfyldte felter
Jeg har en ASP formular hvor jeg i toppen har dette script: <script language="JavaScript" type="text/javascript"> <!-- function makePrintout() { if (window.print) { /* Avoids errors */ window.print(); } }
//--> </script> og det printer jo hele siden som den ser ud. Men jeg vil gerne have det udvidet eller lavet et nyt, således at det kun er de udfyldte felter på formularen der bliver printet ud, kan man det?
// hvis url er lig "", virker ikke i Opera. Hvis url er lig "about:blank", virker det ikke i FireFox: url = (navigator.userAgent.toLowerCase().indexOf("opera") > -1)?"about:blank":"";
w = window.open(url,'w',''); w.document.body.innerHTML = data; w.print(); } }
<script language="JavaScript" type="text/javascript"> <!-- function makePrintout() { data = ""; if (window.print) { /* Avoids errors */
el = document.frmPrint.elements; for(i=0; i < el.length; i++) if (el[i].value.length > 0) data += el[i].name + ": " + el[i].value + "<br>"; }
if (data.length < 1) { alert("Udfyld venligst formularen"); } else { data = data.substring(0, data.length - "<br>".length); // fjern det sidste linieskift
// hvis url er lig "", virker ikke i Opera. Hvis url er lig "about:blank", virker det ikke i FireFox: url = (navigator.userAgent.toLowerCase().indexOf("opera") > -1)?"about:blank":"";
w = window.open(url,'w',''); w.document.body.innerHTML = data; w.print(); } }
Jeg får en fejl når jeg tester. Fejl: et objekt er obligatorisk. og det er denne linie der fejler: w.document.body.innerHTML = data;
Synes godt om
Slettet bruger
18. august 2006 - 12:53#4
Har fundet fejlen, det var fordi jeg havde blokeret for popup. Kan du forklare lidt om hvad det er den sidste del gør - fra form name. Hvorfor er der tre felter på den side, skal jeg ikke bare have denne linie "udskrift af de indtastede data" så får jeg i hvert fald navn på printudskriten men ikke telefon og adresse ? Håber det er forståeligt
Jeg tror ikke jeg har forklaret godt nok. Jeg har en asp side hvor man udfylder formularen og klikker så på Send, så får man bekræft_siden.asp og det er denne side jeg gerne vil have en "printknap" på som henter de udfyldte felter fra den første side og kun dem.
Du skal indsætte formens navn, i JavaScript her: document.FormensNavn.elements Samme navn skal du indsætte i formen, i HTML koden: <form name="FormensNavn" Der skal stå det samme begge steder!
Det er lige meget hvor mange felter du har.
Jeg har tilføjet et check, så den kun tager felter af typen "textbox".
-->
<script language="JavaScript" type="text/javascript"> <!-- function makePrintout() { data = ""; if (window.print) { /* Avoids errors */
el = document.frmPrint.elements; // tilføj alle formens elementer til variablen "el" for(i=0; i < el.length; i++) // løb samtlige elementer igennem { // hvis det nuværende elemenet er en textbox og feltet indeholder noget, tilføj navn og værdi til variablen "data" if (el[i].type == "text" && el[i].value.length > 0) data += el[i].name + ": " + el[i].value + "<br>"; } }
if (data.length == 0) // hvis længden af variablen "data" er lig 0 (tom) { alert("Udfyld venligst formularen"); // giv brugern besked om at udfylde formularen } else { data = data.substring(0, data.length - "<br>".length); // fjern det sidste linieskift
// hvis url er lig "", virker ikke i Opera. Hvis url er lig "about:blank", virker det ikke i FireFox: url = (navigator.userAgent.toLowerCase().indexOf("opera") > -1)?"about:blank":"";
w = window.open(url,'w',''); // åben et nyt vindue med adressen ("about:blank" eller "") w.document.body.innerHTML = data; // put data-værdierne i det nye vindue w.print(); // print det nye vindue } return false; }
Det nemmeste er måske at smide værdierne i en skjult form (via ASP), og derefter submitte den til et nyt vindue, der kun har til formål at udskrive værdierne.
Der skal du over i ASP kategorien.. så du "flytter" bare spørgsmålet til ASP kategorien.
Ved flyt af spørgsmål: Husk at MARKERE dit navn i boksen til venstre, og klikke på ACCEPTER-knappen, efter at du har lagt et SVAR. Derefter opretter du spørgsmålet, i den rette kategori. Derefter lægger du et link til det nye spørgsmål, i dette spørgsmål
Eksempel på det nye spørgsmål:
Titel: Printe værdier hentet via request.form, og kun værdierne Tekst: Jeg modtager værdier via request.form, og og antallet af værdier, samt hvilke værdier, er ukendt. Når værdierne modtages, vises en bekræftelsesside.
Fra bekræftelsessiden skal man kunne klikke på en knap/link, og få et nyt vindue frem, der kun indeholder værdierne, og ikke andre elementer.
Det nye vindue skal så selv aktivere print-funktionen via JavaScript.
Jeg har følgende JavaScript kode tilrådighed:
<script language="JavaScript" type="text/javascript"> <!-- function makePrintout() { if (window.print) { /* Avoids errors */ window.print(); } }
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.