|  | 		    
					
        
         
          
         
	
          | |  | Sammentælling Fra : Danjel
 | 
 Dato :  26-01-10 13:43
 | 
 |  | 
 
            hejsa allesammen.
 Jeg har en lille side her:
http://www.printlight.dk/bestil-bizcard.php En venlig sjæl (Tak Martin) i et php forum hjalp mig igang.
 Der er en linie hvor man kan vælge antal navne (biznames)
 Når man indtaster og trykker enter laver den et tilsvarende antal
 linier.
 Scriptet er snuppet fra jquery.com, resten kreeret af Martin.
 Min næste krise består i sammentællingen.
 Jeg har et forsøg fra tidligere i linie 115 med funktionen calcbizcard
 ().
 Denne funktion virker dog ikke efter at jeg har lavet det nummer med
 at ændre antallet af linier.
 Nogle forslag til hvordan jeg kan få begge dele til at virke??
 evt. koder eller andet er selvfølgelig til udlevering hvis det
 hjælper.
 pft
 Danjel
            
             |  |  | 
  Martin (27-01-2010) 
 
	
          | |  | Kommentar Fra : Martin
 | 
 Dato :  27-01-10 00:25
 | 
 |  | 
 
            On 26-01-2010 21:43, Danjel wrote:
 > hejsa allesammen.
 >
 > Jeg har en lille side her:
 > http://www.printlight.dk/bestil-bizcard.php >
 > En venlig sjæl (Tak Martin) i et php forum hjalp mig igang.
 > Der er en linie hvor man kan vælge antal navne (biznames)
 > Når man indtaster og trykker enter laver den et tilsvarende antal
 > linier.
 > Scriptet er snuppet fra jquery.com, resten kreeret af Martin.
 >
 > Min næste krise består i sammentællingen.
 > Jeg har et forsøg fra tidligere i linie 115 med funktionen calcbizcard
 > ().
 Sæt en klasse på dine pris felter
 fx. class="price"
 så kan du hente alle felter med jquery
 $prices = $('input.price');
 var totalprice = 0;
 foreach($prices AS price) {
    totalprice += price.attr('value');
 }
 $('input[name="GrandTotal"]').attr('value', totalprice);
 >
 > Denne funktion virker dog ikke efter at jeg har lavet det nummer med
 > at ændre antallet af linier.
 >
 > Nogle forslag til hvordan jeg kan få begge dele til at virke??
 >
 > evt. koder eller andet er selvfølgelig til udlevering hvis det
 > hjælper.
 >
 > pft
 > Danjel
            
             |  |  | 
  Danjel (26-01-2010) 
 
	
          | |  | Kommentar Fra : Danjel
 | 
 Dato :  26-01-10 23:21
 | 
 |  | > > Min næste krise består i sammentællingen.
 > > Jeg har et forsøg fra tidligere i linie 115 med funktionen calcbizcard
 > > ().
 >
 > Sæt en klasse på dine pris felter
 > fx. class="price"
 >
 > så kan du hente alle felter med jquery
 > $prices = $('input.price');
 >
 > var totalprice = 0;
 > foreach($prices AS price) {
 >    totalprice += price.attr('value');
 >
 > }
 >
 > $('input[name="GrandTotal"]').attr('value', totalprice);
 
 Ser lovende men, men jeg skal også have lagt det sammen den anden
 vej....
 Feltet oplag ( qty + i , som kunden selv taster ind) skal ganges med
 prc som kommer fra en dropdown ( Prc = document.ordre.prflg.value; )
 
 Jeg er temmelig grøn på javascript, og noget på php, så måske et dumt
 spørgsmål:
 Kan jeg blande alm javascript med jquery?
 Jeg har f.eks. flg.:
 ***********
 // Add start fee (Prcstart)
 
 Totamt = eval(Tot1) + eval(Prcstart);
 
 // If amount is too small, add handling fee
 
 if (Totamt < minamt)
 { Totamt = Totamt + hanfee };
 
 // Set handling fee to zero so that it can be showed correctly to the
 user
 
 if (Totamt >= minamt)
 { hanfee = 0 };
 
 // Change form fields to reflect new values
 
 document.ordre.showstart.value = dm(eval(Prcstart));
 document.ordre.HanFee.value = dm(eval(hanfee));
 document.ordre.GrandTotal.value = dm(eval(Totamt));
 ***********''
 
 pft
 Danjel
 
 
 |  |  | 
  Stig Johansen (27-01-2010) 
 
	
          | |  | Kommentar Fra : Stig Johansen
 | 
 Dato :  27-01-10 11:11
 | 
 |  | Danjel wrote:
 
 [snip en masse]
 
 Det er nogle højst mystiske forslag du får præsenteret.
 
 _Ingen_ clientside validering dúr, højst som en proaktiv validering(aka
 tastefejl).
 
 I dit eksempel er der _intet_ der forhindrer mig i at rette totalen til 5
 kr.
 
 
 --
 Med venlig hilsen
 Stig Johansen
 
 
 |  |  | 
   Martin Larsen (27-01-2010) 
 
	
          | |  | Kommentar Fra : Martin Larsen
 | 
 Dato :  27-01-10 11:21
 | 
 |  | Stig Johansen wrote:
 
 > _Ingen_  clientside validering dúr, højst som en proaktiv validering(aka
 > tastefejl).
 
 Nu er det så jo i en clientside gruppe, men det er en vigtig pointe du
 har fat i!
 
 Martin
 
 
 
 
 |  |  | 
   Martin (27-01-2010) 
 
	
          | |  | Kommentar Fra : Martin
 | 
 Dato :  27-01-10 11:36
 | 
 |  | On 27-01-2010 11:11, Stig Johansen wrote:
 > Danjel wrote:
 >
 > [snip en masse]
 >
 > Det er nogle højst mystiske forslag du får præsenteret.
 >
 > _Ingen_ clientside validering dúr, højst som en proaktiv validering(aka
 > tastefejl).
 >
 > I dit eksempel er der _intet_ der forhindrer mig i at rette totalen til 5
 > kr.
 
 Nu tjekker man jo også altid (eller det håber jeg da stærkt at man gør)
 resultater serverside når formen indsendes.
 
 
 |  |  | 
  Peter Farsinsen (27-01-2010) 
 
	
          | |  | Kommentar Fra : Peter Farsinsen
 | 
 Dato :  27-01-10 13:29
 | 
 |  | Danjel wrote:
 
 > Jeg er temmelig grøn på javascript, og noget på php, så måske et dumt
 > spørgsmål:
 > Kan jeg blande alm javascript med jquery?
 
 jQuery /er/ JavaScript, så det er allerede blandet sammen.
 
 
 >     Totamt = eval(Tot1) + eval(Prcstart);
 
 Hvorfor eval? Jeg har ikke kigget din kode igennem, men det ser forkert
 ud. Måske det er parseInt(); du leder efter?
 
 > // Change form fields to reflect new values
 >
 >     document.ordre.showstart.value = dm(eval(Prcstart));
 >     document.ordre.HanFee.value = dm(eval(hanfee));
 >     document.ordre.GrandTotal.value = dm(eval(Totamt));
 
 jQuery er bl.a. rigtig god til at finde elementer i DOM'en. Her ville
 jeg eksempelvis bruge noget a la:
 
 $('input[name="showstart"]').val(Prcstart);
 
 Ovenstående hindrer ikke at 'Prcstart' udregnes med den eksisterende kode.
 
 - Peter
 
 
 |  |  | 
   Rune Jensen (27-01-2010) 
 
	
          | |  | Kommentar Fra : Rune Jensen
 | 
 Dato :  27-01-10 14:10
 | 
 |  | Peter Farsinsen skrev:
 > Danjel wrote:
 >
 >> Jeg er temmelig grøn på javascript, og noget på php, så måske et dumt
 >> spørgsmål:
 >> Kan jeg blande alm javascript med jquery?
 >
 > jQuery /er/ JavaScript, så det er allerede blandet sammen.
 
 Ja. Men man kan ikke bruge de syntacer i snakker om i JS uden først at
 hente JQuery-frameworket ind, og jeg regner med at client-side drejer
 sig om *standard* syntaxer??
 
 Der er et hav af frameworks derude, hvad med at oprette en gruppe
 specielt til frameworks?
 
 
 MVH
 Rune Jensen
 
 
 |  |  | 
    Peter Farsinsen (27-01-2010) 
 
	
          | |  | Kommentar Fra : Peter Farsinsen
 | 
 Dato :  27-01-10 14:25
 | 
 |  | Rune Jensen wrote:
 >> jQuery /er/ JavaScript, så det er allerede blandet sammen.
 >
 > Ja. Men man kan ikke bruge de syntacer i snakker om i JS uden først at
 > hente JQuery-frameworket ind, og jeg regner med at client-side drejer
 > sig om *standard* syntaxer??
 
 Nu hedder gruppen jo ikke d.e.i.w.javascript, men *.clientside. Det
 ville være fint, hvis JavaScript og manipulation af DOM virkede
 'standardiseret' på tværs af browsere, men det er jo ikke tilfældet og
 dét er netop et af de problemer de fleste frameworks forsøger at råde
 bod på.
 
 > Der er et hav af frameworks derude, hvad med at oprette en gruppe
 > specielt til frameworks?
 
 Vil du ikke hellere ha' en javascript gruppe så?
 
 - Peter
 
 
 |  |  | 
     Rune Jensen (27-01-2010) 
 
	
          | |  | Kommentar Fra : Rune Jensen
 | 
 Dato :  27-01-10 15:04
 | 
 |  | Peter Farsinsen skrev:
 
 > Vil du ikke hellere ha' en javascript gruppe så?
 
 Det er jo det, client-side er til.
 
 Et af problemerne med at diskutere ikke-standard syntaxer er som jeg
 skriver, at man ikke kan bruge dem direkte. Derfor er de ikke til nogen
 hjælp andet end lige dem, som bruger netop det framework. JS findes i
 alle browsere i ren form, derfor vil diskussion af ren JS kunne bruges
 af alle.
 
 Frasmeworks er bygget på indbyggede sprog, derfor vil det være ulogisk
 at sætte dem som hovedgruppe og JS som en undergruppe.
 
 Med mindre man antager, at JS er det eneste tilbageværende indbyggede
 sprog, og at f.eks. VBscript er dødt, for det er også client-side.
 
 
 MVH
 Rune Jensen
 
 
 |  |  | 
      Peter Farsinsen (27-01-2010) 
 
	
          | |  | Kommentar Fra : Peter Farsinsen
 | 
 Dato :  27-01-10 15:27
 | 
 |  | Rune Jensen wrote:
 >> Vil du ikke hellere ha' en javascript gruppe så?
 >
 > Det er jo det, client-side er til.
 
 Måske - jeg synes ikke der er nogen hindringer i fundatsen for at den
 også omhandler frameworks skrevet i javascript.
 
 > Et af problemerne med at diskutere ikke-standard syntaxer er som jeg
 > skriver, at man ikke kan bruge dem direkte. Derfor er de ikke til nogen
 > hjælp andet end lige dem, som bruger netop det framework. JS findes i
 > alle browsere i ren form, derfor vil diskussion af ren JS kunne bruges
 > af alle.
 
 Det er rigtigt, men der er typisk også mange forskellige løsninger på
 cross browser-problemstillinger. Man skal jo også vælge, hvilken én af
 de løsninger man vil benytte, hvis man altså ikke er typen der
 insisterer på at genopfinde den dybe tallerken, hver gang man løber ind
 i et problem.
 
 > Frasmeworks er bygget på indbyggede sprog, derfor vil det være ulogisk
 > at sætte dem som hovedgruppe og JS som en undergruppe.
 
 Det var en joke...
 
 - Peter
 
 
 |  |  | 
       Stig Johansen (28-01-2010) 
 
	
          | |  | Kommentar Fra : Stig Johansen
 | 
 Dato :  28-01-10 02:46
 | 
 |  | Peter Farsinsen wrote:
 
 > Det er rigtigt, men der er typisk også mange forskellige løsninger på
 > cross browser-problemstillinger. Man skal jo også vælge, hvilken én af
 > de løsninger man vil benytte, hvis man altså ikke er typen der
 > insisterer på at genopfinde den dybe tallerken, hver gang man løber ind
 > i et problem.
 
 I det her tilfælde kan jeg nu ikke se nogen fordel i
 frameworks/crossbrowser.
 
 Det eneste OP har brug for er en document.getElementById,cloneNode og
 insertAfter, så der er ikke tale om ret mange standard javascript linier.
 
 Til gengæld vil man kunne se (forstå) hvad der sker.
 
 --
 Med venlig hilsen
 Stig Johansen
 
 
 |  |  | 
  Danjel (27-01-2010) 
 
	
          | |  | Kommentar Fra : Danjel
 | 
 Dato :  27-01-10 04:55
 | 
 |  | 
 
            On 27 Jan., 11:36, Martin <m...@scandesigns.invalid> wrote:
 > On 27-01-2010 11:11, Stig Johansen wrote:
 >
 > > Danjel wrote:
 >
 > > [snip en masse]
 >
 > > Det er nogle højst mystiske forslag du får præsenteret.
 >
 > > _Ingen_ clientside validering dúr, højst som en proaktiv validering(aka
 > > tastefejl).
 >
 > > I dit eksempel er der _intet_ der forhindrer mig i at rette totalen til 5
 > > kr.
 >
 > Nu tjekker man jo også altid (eller det håber jeg da stærkt at man gør)
 > resultater serverside når formen indsendes.
 Der bliver også checket serverside, men så langt er jeg ikke nået
 endnu    Desuden havde jeg oprindeligt også lagt en "onchange" på totalerne,
 således at hvis man forsøgte at rette, så blev de opdateret med nye
 udregnede værdier.
 Mit problem ligger stadig i udregningen, og i den forbindelse skal jeg
 også have mulighed for "if ..."
   Danjel
            
             |  |  | 
  Stig Johansen (27-01-2010) 
 
	
          | |  | Kommentar Fra : Stig Johansen
 | 
 Dato :  27-01-10 15:18
 | 
 |  | 
 
            Danjel wrote:
 > Der bliver også checket serverside, men så langt er jeg ikke nået
 > endnu    > Desuden havde jeg oprindeligt også lagt en "onchange" på totalerne,
 > således at hvis man forsøgte at rette, så blev de opdateret med nye
 > udregnede værdier.
 > 
 > Mit problem ligger stadig i udregningen, og i den forbindelse skal jeg
 > også have mulighed for "if ..."
 if ... ?
 Det er vel ikke særligt smart at clone nodes med samme værdi, så du ikke kan
 skille dem ad.
 Lav dem id'er som:
 navn1,vari1,qty1,pris1
 navn2,vari2,qty2,pris2
 ... osv
 og iterér over navnene med 
 for (var i=1;i<'antal');i++) {
    pris= pris + document.getElementById('qty'+i).value * 'noget'
 .....
 -- 
 Med venlig hilsen
 Stig Johansen
            
             |  |  | 
  N/A (27-01-2010) 
 
	
          | |  | Kommentar Fra : N/A
 | 
 Dato :  27-01-10 13:29
 | 
 |  | 
 
 
 |  |  | 
  Danjel (02-02-2010) 
 
	
          | |  | Kommentar Fra : Danjel
 | 
 Dato :  02-02-10 04:49
 | 
 |  | > Det er vel ikke særligt smart at clone nodes med samme værdi, så du ikke kan
 > skille dem ad.
 > Lav dem id'er som:
 > navn1,vari1,qty1,pris1
 > navn2,vari2,qty2,pris2
 > .. osv
 >
 > og iterér over navnene med
 > for (var i=1;i<'antal');i++) {
 >    pris= pris + document.getElementById('qty'+i).value * 'noget'
 > ....
 Jeg har følgende:
 ******************************''
 <script type="text/javascript">
 
 $(document).ready(function() {
 $antal = $("input[name='biznames']")
 $antal.removeAttr("onchange")
 $antal.change(function () {
 $firstName=$("input[name='navn1']").attr("name","name")
 $tr = $firstName.parent().parent()
 $("form tr").has("td input[name^='navn']").remove()
 for(i=this.value; i>1; i--) {
 
 $tr.clone().insertAfter($tr).find("input").first().attr
 ("name","navn"+i)
 }
 $firstName.attr("name","navn1")
 })
 });
 
 </script>
 ***************************************
 Det kan godt være at jeg ikke er den skarpeset kniv i skuffen, men jeg
 har læst og læst, men kan stadig ikke få det til at virke.
 
 Som det er nu, så har jeg fået udregningen til at virke indtil jeg
 retter antal navne (biznames).
 
 Jeg har på fornemmelsen at det er, som det også er blevet nævnt her,
 fordi at jeg ikke har givet de andre felter numre.
 Så vidt jeg kan se på koden, så bliver der dannet navn1, navn2 o.s.v.,
 men ikke vari1, vari2, qty1, qty2, total1, total2 o.s.v.
 Jeg kan godt til dels forstå de enkelte elementer, men hvordan det
 hele hænger sammen er jeg ikke klog nok til.
 
 Er der en af jer kloge der kan lave et eksempel/løsning hvor jeg får
 navngivet/nummereret flere felter end bare "navn"?
 
 En ting jeg også har opdaget er at jeg ikke kan fange data efter
 formularen er blevet sendt med post, har været på google, men uden
 held (igen....)
 
 Undskyld mig og mine spørgsmål....
 pft
 danjel
 
 
 
 
 |  |  | 
  Danjel (17-03-2010) 
 
	
          | |  | Kommentar Fra : Danjel
 | 
 Dato :  17-03-10 05:48
 | 
 |  | 
 
            On 17 Mar., 11:28, Jens Peter Karlsen <jpkarl...@mvps.org> wrote:
 > Parseint returnerer NaN hvis strengen ikke er et tal så brug
 > isnan(parseInt(antal.value)) i stedet.
 har prøvet:
 if (isnan(parseInt(antal.value)) || (antal.value-0<1))
 men scriptet kører ikke....
 Har lagt "alert" bomber ind under tests.
 Hverken det før eller efter "else" bliver kørt    Har lidt en tanke om at "antal.value" er skurken, men dette:
 if (antal.value-0<1) {
 virker jo....
 Jeg er afgjort _ikke_ guru, så det er muligvis en banalitet.
 pft
 Danjel
 >
 > I øvrigt virker det lidt besynderligt at du først undersøger om value
 > er mindre end 1 og først derefter checker om det overhovedet er et
 > tal.
 >
 > Nu har jeg ikke resten af tråden her så kan ikke se hvad du prøver at
 > opnå.
 Scriptet gør det det skal, så det er vist ikke vigtigt, mit problem er
 at scriptet ikke kører når jeg har flere betingelser.
 >
 > Regards Jens Peter Karlsen.
            
             |  |  | 
   Jens Peter Karlsen (17-03-2010) 
 
	
          | |  | Kommentar Fra : Jens Peter Karlsen
 | 
 Dato :  17-03-10 15:59
 | 
 |  | Min fejl. brug isNaN i stedet.
 
 Regards Jens Peter Karlsen.
 
 On Wed, 17 Mar 2010 04:47:38 -0700 (PDT), Danjel <danjel@jungersen.dk>
 wrote:
 
 >har prøvet:
 >if (isnan(parseInt(antal.value)) || (antal.value-0<1))
 >men scriptet kører ikke....
 
 
 |  |  | 
   Jens Peter Karlsen (17-03-2010) 
 
	
          | |  | Kommentar Fra : Jens Peter Karlsen
 | 
 Dato :  17-03-10 16:11
 | 
 |  | Jeg er stadig forundret over at du undersøger om value er et tal eller
 det er et tal under 1. Det giver ikke rigtig mening.
 Hvis det er et tal (uanset hvilket) bliver det udført efter isNaN
 check og andet check udføres aldrig.
 At bytte om på checks vil ikke ændre på noget.
 Er du sikker på at du ikke ville bruge && i stedet for || (betyder
 eller) så begge checks udføres?
 
 Regards Jens Peter Karlsen.
 
 On Wed, 17 Mar 2010 04:47:38 -0700 (PDT), Danjel <danjel@jungersen.dk>
 wrote:
 
 >if (isnan(parseInt(antal.value)) || (antal.value-0<1))
 
 
 |  |  | 
  Danjel (02-02-2010) 
 
	
          | |  | Kommentar Fra : Danjel
 | 
 Dato :  02-02-10 23:56
 | 
 |  | Har fået data med over med POST....
 
 Har installeret firebug, og fået bekræftet at felterne ikke bliver
 nummereret, bortset fra "navn"...
 
 Beregningerne _tror_ jeg at jeg kan få styr på, hvis jeg får
 nummereringen til at virke.
 
 /Danjel
 
 
 |  |  | 
  Stig Johansen (03-02-2010) 
 
	
          | |  | Kommentar Fra : Stig Johansen
 | 
 Dato :  03-02-10 09:27
 | 
 |  | "Danjel" <danjel@jungersen.dk> wrote in message
 news:b14ecdfc-2fbd-41b8-98ea-ba44987b5c09@h2g2000yqj.googlegroups.com...
 
 >Har installeret firebug, og fået bekræftet at felterne ikke bliver
 >nummereret, bortset fra "navn"...
 
 DOM inspector kan også fortælle dig det.
 
 >Beregningerne _tror_ jeg at jeg kan få styr på, hvis jeg får
 >nummereringen til at virke.
 
 Der er ikke så meget hokus-pokus i det, du skal blot sørge for, at de
 underliggende nodes bliver tildelt en fortløbende nummerrække/id (når du
 deepkloner dem).
 
 I øvrigt er dit koncept ikke pissesmart - prøv f.eks.
 Indtast oplysninger i 'linie 1'.
 Hovsa, jeg skulle bruge 3 - ret antallet til 3.
 Indtast oplysninger i linie 2, og -
 Hovsa, jeg skulle kun bruge 2 i stedet for 3.
 
 Hvad sker der med data når man retter antallet (op og ned)?
 
 --
 Med venlig hilsen/Best regards
 Stig Johansen
 
 
 
 
 
 |  |  | 
  Danjel (17-03-2010) 
 
	
          | |  | Kommentar Fra : Danjel
 | 
 Dato :  17-03-10 16:43
 | 
 |  | On Mar 17, 4:11 pm, Jens Peter Karlsen <jpkarl...@mvps.org> wrote:
 > Jeg er stadig forundret over at du undersøger om value er et tal eller
 > det er et tal under 1. Det giver ikke rigtig mening.
 > Hvis det er et tal (uanset hvilket) bliver det udført efter isNaN
 > check og andet check udføres aldrig.
 > At bytte om på checks vil ikke ændre på noget.
 > Er du sikker på at du ikke ville bruge && i stedet for || (betyder
 > eller) så begge checks udføres?
 >
 > Regards Jens Peter Karlsen.
 >
 > On Wed, 17 Mar 2010 04:47:38 -0700 (PDT), Danjel <dan...@jungersen.dk>
 > wrote:
 >
 > >if (isnan(parseInt(antal.value)) || (antal.value-0<1))
 Den der virker:
 if (isNaN(parseInt(antal.value)) || (antal.value-0<1)) {
 
 Den skal fange "noget" der ikke er et tal, eller et gyldigt tal under
 "1"
 
 Tak for hjælpen....
 /Danjel
 
 
 |  |  | 
  Danjel (03-02-2010) 
 
	
          | |  | Kommentar Fra : Danjel
 | 
 Dato :  03-02-10 06:28
 | 
 |  | 
 
            > >Beregningerne _tror_ jeg at jeg kan få styr på, hvis jeg får
 > >nummereringen til at virke.
 >
 > Der er ikke så meget hokus-pokus i det, du skal blot sørge for, at de
 > underliggende nodes bliver tildelt en fortløbende nummerrække/id (når du
 > deepkloner dem).
 Det er præcist den del jeg ikke har styr på    >
 > I øvrigt er dit koncept ikke pissesmart - prøv f.eks.
 > Indtast oplysninger i 'linie 1'.
 > Hovsa, jeg skulle bruge 3 - ret antallet til 3.
 > Indtast oplysninger i linie 2, og -
 > Hovsa, jeg skulle kun bruge 2 i stedet for 3.
 >
 > Hvad sker der med data når man retter antallet (op og ned)?
 Jeg ved det, men jeg håber på at jeg kan løse det senere, har fundet
 en stump som skulle gøre at den kan huske det...
 Men jeg er selvfølgelig altid åben for andre muligheder, forslag ??
 /Danjel
            
             |  |  | 
  Stig Johansen (03-02-2010) 
 
	
          | |  | Kommentar Fra : Stig Johansen
 | 
 Dato :  03-02-10 22:23
 | 
 |  | 
 
            Danjel wrote:
 >> >Beregningerne _tror_ jeg at jeg kan få styr på, hvis jeg får
 >> >nummereringen til at virke.
 >>
 >> Der er ikke så meget hokus-pokus i det, du skal blot sørge for, at de
 >> underliggende nodes bliver tildelt en fortløbende nummerrække/id (når du
 >> deepkloner dem).
 > Det er præcist den del jeg ikke har styr på    Jeg ved ikke hvordan man kan lave det med jquery, men her er et forslag til
 princip.
 I din tabel laver du 1. række som:
 <tr id="firstrow"><td><input id="navn1" name="navn1">..<td><input 
 id="vari1" name="vari1">..<td><input  id="qty1" name="qty1">..<td><input 
 id="total1" name="total1">..
 Jeg har ikke skrevet det fuldt ud, men hvis du sørger for der ikke er
 mellemrum/linieskift mellem <tr> og <td>, så ved vi, at der er præcis 4
 childnodes.
 Så laver du et loop med indsættelse af nodes a la:
 var newnode;
 var firstrow=document.getElementById('firstrow');
 var nextrow=firstrow.nextSibling;
 var antal=document.getElementById('din_id_på_antal').value ;
 for (var i=2; i<antal;i++) {
    newnode =  firstrow.cloneNode(true);
    newnode.id = 'firstrow'+i ;
    newnode.chileNodes(0).chileNodes(0).id='navn'+i ;
    newnode.chileNodes(0).chileNodes(0).name='navn'+i ;
    newnode.chileNodes(1).chileNodes(0).id='vari'+i ;
    newnode.chileNodes(1).chileNodes(0).name='vari'+i ;
 ... osv
    firstrow.parentNode.insertBefore(nextrow);
 }
 Nu har jeg skrevet id'er på alle elementerne, men det behøver du nok ikke,
 blot dem du skal have fat i til beregning.
 Når du skal regne på dem kan du nu bruge et loop
 var total=0;
 var qty ;
 for (var i=1;i<antal;i++) {
    qty=document.getElementById('qty'+i).value ;
    total = total + qty*etellerandet ;
    document.getElementById('total'+i).value = qty*etellerandet ;
 }
 > Jeg ved det, men jeg håber på at jeg kan løse det senere, har fundet
 > en stump som skulle gøre at den kan huske det...
 > Men jeg er selvfølgelig altid åben for andre muligheder, forslag ??
 Jeg vil nok foreslå du sætter antal til disabled når der er valgt antal.
 Så undgår man rod med at fjerne/tilføje mere end een gang.
 -- 
 Med venlig hilsen
 Stig Johansen
            
             |  |  | 
  Danjel (11-02-2010) 
 
	
          | |  | Kommentar Fra : Danjel
 | 
 Dato :  11-02-10 02:52
 | 
 |  | Er noget et pænt stykke (synes jeg selv), med meget stor hjælp fra jer
 og "serverside.php".
 
 Har flækket en lille en sammen:
 ************************
 function calcbizcard()
 {
 
 // Fee (hanfee) if order amount is below xx (minamt)
 
 hanfee = 75;
 minamt = 1500;
 
 // Fetch values from dropdown script
 
 Prc = document.ordre.prflg.value;
 Prcstart = document.ordre.prstart.value;
 
 // Initialize values
 
 Qty1 = 0; Qty2 = 0; Qty3 = 0;
 Tot1 = 0; Tot2 = 0; Tot3 = 0;
 
 
 // Set values from fields
 
 if (document.ordre.qty1.value > "")
 { Qty1 = document.ordre.qty1.value };
 document.ordre.qty1.value = eval(Qty1);
 
 Tot1 = Qty1 * Prc;
 document.ordre.total1.value = dm(eval(Tot1));
 
 if (document.ordre.qty2.value > "")
 { Qty2 = document.ordre.qty2.value };
 document.ordre.qty2.value = eval(Qty2);
 
 Tot2 = Qty2 * Prc;
 document.ordre.total2.value = dm(eval(Tot2));
 
 
 // Add start fee (Prcstart)
 
 Totamt = eval(Tot1) + eval(Tot2) + eval(Prcstart);
 
 // Set handling fee to zero so that it can be showed correctly to the
 user
 
 if (Totamt >= minamt)
 { hanfee = 0 };
 
 // If amount is too small, add handling fee
 
 if (Totamt < minamt)
 { Totamt = Totamt + hanfee };
 
 // Change form fields to reflect new values
 
 document.ordre.showstart.value = dm(eval(Prcstart));
 document.ordre.HanFee.value = dm(eval(hanfee));
 document.ordre.GrandTotal.value = dm(eval(Totamt));
 
 }
 
 </script>
 ***********************************
 Den virker som den skal, men selvfølgelig _kun_ når der er 2 linier.
 Derfor har jeg forsøgt rette til således at den tager alle linier.
 Antallet af linier kan læses i feltet "biznames"
 
 Det har jeg fået til nedenstående:
 ***********************************
 function calcbizcard()
 {
 
 // Fee (hanfee) if order amount is below xx (minamt)
 
 hanfee = 75;
 minamt = 1500;
 
 // Fetch values from dropdown script
 
 var Prc = document.ordre.prflg.value;
 var Prcstart = document.ordre.prstart.value;
 var biznames = document.ordre.biznames.value;
 
 var Totamt=0;
 var qty;
 
 for (var a=1;a<=biznames;a++) {
 qty=document.ordre.'qty'+a.value ;
 linetotal=qty*Prc;
 Totamt=Totamt+linetotal ;
 document.ordre.total+a.value = linetotal;
 }
 
 // Add startfee
 
 Totamt=Totamt+Prcstart;
 
 // Set handling fee to zero so that it can be showed correctly to the
 user
 
 if (Totamt >= minamt)
 { hanfee = 0 };
 
 // If amount is too small, add handling fee
 
 if (Totamt < minamt)
 { Totamt = Totamt + hanfee };
 
 // Change form fields to reflect new values
 
 document.ordre.showstart.value = dm(eval(Prcstart));
 document.ordre.HanFee.value = dm(eval(hanfee));
 document.ordre.GrandTotal.value = dm(eval(Totamt));
 
 }
 
 </script>
 *********************************
 
 Men det virker ikke, nogle ideer?
 
 Jeg er som sagt ret grøn på scriptområdet, så det er muligvis bare
 noget banalt...
 
 pft
 /Danjel
 
 
 |  |  | 
  Stig Johansen (11-02-2010) 
 
	
          | |  | Kommentar Fra : Stig Johansen
 | 
 Dato :  11-02-10 11:06
 | 
 |  | 
 
            Danjel wrote:
 > Men det virker ikke, nogle ideer?
 På et tidspunkt i nat skulle jeg op, og katten ville have mad, så jeg
 opdaterede faktisk dit eksempel med dine egne prisberegninger:
 <http://w-o-p-r.dk/test/bestil-bizcard.php.html> (og lidt højrejusterning til tal m.v.)
 -- 
 Med venlig hilsen
 Stig Johansen
            
             |  |  | 
  Anders Wegge Keller (11-02-2010) 
 
	
          | |  | Kommentar Fra : Anders Wegge Keller
 | 
 Dato :  11-02-10 11:05
 | 
 |  | Danjel <danjel@jungersen.dk> writes:
 
 > Jeg er som sagt ret grøn på scriptområdet, så det er muligvis bare
 > noget banalt...
 
 Har du et link til en side hvor man kan se det?
 
 --
 /Wegge
 
 Leder efter redundant peering af dk.*,linux.debian.*
 
 
 |  |  | 
  Danjel (11-02-2010) 
 
	
          | |  | Kommentar Fra : Danjel
 | 
 Dato :  11-02-10 04:33
 | 
 |  | 
 
            On 11 Feb., 11:05, Anders Wegge Keller <we...@wegge.dk> wrote:
 > Danjel <dan...@jungersen.dk> writes:
 > > Jeg er som sagt ret grøn på scriptområdet, så det er muligvis bare
 > > noget banalt...
 >
 >  Har du et link til en side hvor man kan se det?
 selvfølgelig:
http://www.printlight.dk/bestil-bizcard-jq.php og
http://www.printlight.dk/bestil-bizcard.php Den første er den løsning som jeg er kommet længst med, anden løsning
 har nogle andre problemer som jeg ikke ved hvordan jeg skal løse...
 /Danjel
            
             |  |  | 
  Danjel (11-02-2010) 
 
	
          | |  | Kommentar Fra : Danjel
 | 
 Dato :  11-02-10 04:38
 | 
 |  | 
 
            On 11 Feb., 11:05, Stig Johansen <wopr...@gmail.com> wrote:
 > Danjel wrote:
 > > Men det virker ikke, nogle ideer?
 >
 > På et tidspunkt i nat skulle jeg op, og katten ville have mad, så jeg
 > opdaterede faktisk dit eksempel med dine egne prisberegninger:
 > <http://w-o-p-r.dk/test/bestil-bizcard.php.html> > (og lidt højrejusterning til tal m.v.)
 Er de ikke skønne de små    Det ser rigtig super ud, henter den værdierne fra mine dropdowns??
 Det synes jeg umiddelbart at det ser ud til.
 /Danjel
            
             |  |  | 
  Stig Johansen (11-02-2010) 
 
	
          | |  | Kommentar Fra : Stig Johansen
 | 
 Dato :  11-02-10 13:10
 | 
 |  |  |  |  | 
  Danjel (11-02-2010) 
 
	
          | |  | Kommentar Fra : Danjel
 | 
 Dato :  11-02-10 13:52
 | 
 |  | 
 
            Jeg står allerede i dyb gæld til jer gutter.
 Men jeg har stadig 2 ting jeg vil spørge efter.
 Først og fremmest vil jeg jo gerne lære af det, så jeg vil spørge om
 lidt forklaring.
 Jeg har selv forsøgt at forstå det, og har kommenteret det jeg kan,
 vil i hjælpe med resten ?
 Den sidste ting jeg vil spørge efter er om jeg må lægge koden på min
 hjemmeside?
 Formålet med siden er at hjælpe andre ligesindede.
 Siden er ikke oppe at køre endnu, men den kommer på danjel.dk
 Koden som den ser ud på min hjemmeside:
 Den første fattede jeg ikke meget af    ***************************
 <script type="text/javascript">
 // ******    clonelines    ******
 // Clone lines - for use in bizcard-section
 var prevantal = 1 ;
 function clonelines(antal) {
   if (antal.value-0<1) return ;
   var firstrow=document.getElementById('firstrow');
   if (antal.value-0 < prevantal ) {
      for (var i =(antal.value-0)+1;i<=prevantal; i++) {
 
 firstrow.parentNode.removeChild(document.getElementById('firstrow'+i));
      }
      prevantal=antal.value-0;
      return ;
   }
   var newnode;
   var nextrow=document.getElementById('nextrow');
   for (var i=prevantal+1; i<=antal.value;i++) {
     newnode =  firstrow.cloneNode(true);
     newnode.id = 'firstrow'+i ;
     for (var c=0;c<4;c++)
 { newnode.childNodes[c].childNodes[0].value='';}
     newnode.childNodes[0].childNodes[0].name='navn'+i ;
     newnode.childNodes[1].childNodes[0].name='vari'+i ;
     newnode.childNodes[2].childNodes[0].id='qty'+i ;
     newnode.childNodes[2].childNodes[0].name='qty'+i ;
     newnode.childNodes[3].childNodes[0].id='pris'+i ;
     newnode.childNodes[3].childNodes[0].name='pris'+i ;
     firstrow.parentNode.insertBefore(newnode,nextrow);
   }
   prevantal=antal.value-0;
 //  antal.setAttribute('disabled','disabled');
 }
 </script>
 ***************************
 koden for beregning:
 ***************************
 <script type="text/javascript">
 // *********  Calculate price for businesscards  ***********
 function calcbizcard()
 {
 // Get values from dropdowns, and set rest of vars
    var prisprstk = document.getElementById('prflg').value - 0;
    Prcstart = document.getElementById('prstart').value ;
    var minamt = 1500.0;
    var hanfee = 75;
    var antal=document.getElementById('antal').value - 0 ;
    var pristot=0 ;
    var qty ;
 // Calculate the totals (pristot) and the subtotal for each line
 ('pris'+a)
    for (var a=1;a<=antal;a++) {
       qty=document.getElementById('qty'+a).value - 0 ;
       pristot=pristot+qty*prisprstk ;
       document.getElementById('pris'+a).value = dm(qty*prisprstk) ;
    }
 // Add startfee
    pristot = pristot + (Prcstart-0) ;
    document.getElementById('showstart').value = dm(Prcstart) ;
 // If total amount is too small (less than minamt), add handling fee
 (hanfee)
    if (pristot < minamt) {
       pristot = pristot + (hanfee-0) ;
       document.getElementById('hanfee').value = dm(hanfee);
    } else {
       document.getElementById('hanfee').value = dm(0);
    }
 // Tranfer total (pristot) to formfield.
 // Also make sure that the price is with 2 decimal
    document.getElementById('pristot').value = dm(pristot) ;
 }
 </script>
 *********************
 De venligste (og meget taknemmelige) hilsener
 Danjel
 PS: Hvis der er noget jeg kan gøre for jer, må i endelig sige til.
 Jeg ved at mennesker som jer svarer på disse ting for at hjælpe, jeg
 gør det selv om andre emner, men hvis i er i nærheden af mig, så kom
 endelig indenfor, så kan jeg i det mindste byde på en lille en, en
 plakat af børnene, katten, en stak visitkort ???
            
             |  |  | 
  Stig Johansen (12-02-2010) 
 
	
          | |  | Kommentar Fra : Stig Johansen
 | 
 Dato :  12-02-10 05:02
 | 
 |  | 
 
            Danjel wrote:
 > Jeg har selv forsøgt at forstå det, og har kommenteret det jeg kan,
 > vil i hjælpe med resten ?
 Man kan prøve.
 > Den sidste ting jeg vil spørge efter er om jeg må lægge koden på min
 > hjemmeside?
 Det kode jeg laver er til fri afbenyttelse.
 > Den første fattede jeg ikke meget af    Først en overordnet forklaring.
 Din tabel består af et antal rækker (<tr>), hvor vi skal have identificeret
 den række, der skal gentages/kopieres.
 Den har jeg kaldt 'firstrow', men den kan kaldes hvad som helst.
 Javascript har ingen insertafter, men kun en insertbefore, så vi skal vide
 hvor vi skal indsætte rækkerne (before), og den række(<tr>), har jeg kaldt
 'nextrow'.
 Vi ved nu vi skal kopiere 'firstrow' et antal gange, og indsætte dem
 umiddelbart inden 'nextrow', dog med ændrede navne/id'er (nummerering).
 Da vi også skal have mulighed for at fjerne et antal rækker, bliver disse
 nye rækker navngivet 'firstrow2','firstrow3' osv.
 Ud fra det er lidt kommentering af koden (kommentarer står efter koden).
 > var prevantal = 1 ;
 Denne indeholder tidligere antal rækker, og startes om med 1.
 >   if (antal.value-0<1) return ;
 Hvis vi har angivet mindre end 1, gør vi ikke noget.
 (Det med at trække 0 fra er blot for at tvinge typen over i tal i stedet for
 streng).
 >   var firstrow=document.getElementById('firstrow');
 Her henter vi 'firstrow'.
 Og tjekker på om det nye antal er mindre end det nuværende.
 >   if (antal.value-0 < prevantal ) {
 >      for (var i =(antal.value-0)+1;i<=prevantal; i++) {
 Her looper vi over numrene i forhold til antal, og hvis man havde 4, og
 skriver 2, vil i blive 3 og 4.
 >  
 > firstrow.parentNode.removeChild(document.getElementById('firstrow'+i));
 Her fjerner vi den pågældende rækker (firstrow+i) dvs. firstrow3 og
 firstrow4.
 >      }
 >      prevantal=antal.value-0;
 >      return ;
 Gemmer det nye antal, og afslutter funktionen.
 >   }
 Kommer vi herned, er der tale om tilføjelse af rækker.
 >   var newnode;
 Arbejdsvariabel til den nye række.
 >   var nextrow=document.getElementById('nextrow');
 nextrow er den række, der skal bruges til at fortælle hvor den nye række
 skal indsættes før (firstrow har vi fra tidligere).
 >   for (var i=prevantal+1; i<=antal.value;i++) {
 >     newnode =  firstrow.cloneNode(true);
 Der deepkloner vi, dvs. tager en kopi af 'firstrow' incl alt indhold, så i
 princippet kan du betragte newnode som
 <tr id="firstrow"><td><input name="navn1"></td>... osv,
 altså det, der står mellem <tr> og </tr>
 >     newnode.id = 'firstrow'+i ;
 Da vi skal kunne finde dem til senere sletning, får de en fortløbende id, så
 vores nye node hedder nu eks. <tr id="firstrow3"><td.. osv
 >     for (var c=0;c<4;c++)
 > { newnode.childNodes[c].childNodes[0].value='';}
 Vi ved fra HTML'et, at der er præcis 4 childnodes(børn), som hver er
 <td></td>, samtidig ved vi at hver af disse childnodes består af en
 childnode (<input>).
 Disse ting er nummereret fra 0, og hedder 0,1,2,3 og ikke 1,2,3,4.
 Så dette loop nulstiller value i <input>, så det varer til <input
 value=""...
 >     newnode.childNodes[0].childNodes[0].name='navn'+i ;
 >     newnode.childNodes[1].childNodes[0].name='vari'+i ;
 >     newnode.childNodes[2].childNodes[0].id='qty'+i ;
 >     newnode.childNodes[2].childNodes[0].name='qty'+i ;
 >     newnode.childNodes[3].childNodes[0].id='pris'+i ;
 >     newnode.childNodes[3].childNodes[0].name='pris'+i ;
 childNodes[0],childNodes[1],childNodes[2],childNodes[3] er <td>' erne med
 <input> felterne, og <input> er en child af <td>, dermed .childNodes[0].
 De bliver tildelt de respektive name= og id=
 >     firstrow.parentNode.insertBefore(newnode,nextrow);
 Her beder vi om at indsætte vores nye <tr> umiddelbart før 'nextrow'.
 >   }
 >   prevantal=antal.value-0;
 Gemmer det nuværende antal til senere brug.
 > //  antal.setAttribute('disabled','disabled');
 Det var hvis du ville disable antal efter en ændring, men den kan fjernes.
 > koden for beregning:
 Den har du vist styr på, så den undlader jeg at kommentere.
 -- 
 Med venlig hilsen
 Stig Johansen
            
             |  |  | 
  Danjel (17-03-2010) 
 
	
          | |  | Kommentar Fra : Danjel
 | 
 Dato :  17-03-10 02:47
 | 
 |  | 
 
            Det er supergodt!!
 Der er en enkelt udfordring tilbage.
 Den brækker sig hvis man f.eks. indtaster "kljhdsaf" eller "a", altså
 alt andet end tal.
 Derfor har jeg forsøgt mig med:
   if (antal.value-0<1) {
 //  if (antal.value-0<1 || !parseInt(antal.value)) {
     alert("Indtast venligt et tal, mindst 1");
    return ;
   } else {
 resten af script....
 }
 Den første linie virker, men fanger kun forkerte tal.
 Anden linie (den udkommenterede), får scriptet til at stoppe med at
 virke.
 Hvad gør jeg galt ??
   Danjel
            
             |  |  | 
  Jens Peter Karlsen (17-03-2010) 
 
	
          | |  | Kommentar Fra : Jens Peter Karlsen
 | 
 Dato :  17-03-10 11:29
 | 
 |  | Parseint returnerer NaN hvis strengen ikke er et tal så brug
 isnan(parseInt(antal.value)) i stedet.
 
 I øvrigt virker det lidt besynderligt at du først undersøger om value
 er mindre end 1 og først derefter checker om det overhovedet er et
 tal.
 
 Nu har jeg ikke resten af tråden her så kan ikke se hvad du prøver at
 opnå.
 
 Regards Jens Peter Karlsen.
 
 On Wed, 17 Mar 2010 01:46:47 -0700 (PDT), Danjel <danjel@jungersen.dk>
 wrote:
 
 >Den brækker sig hvis man f.eks. indtaster "kljhdsaf" eller "a", altså
 >alt andet end tal.
 >
 >Derfor har jeg forsøgt mig med:
 >  if (antal.value-0<1) {
 >//  if (antal.value-0<1 || !parseInt(antal.value)) {
 
 
 |  |  | 
 |  |