02. februar 2004 - 12:54Der er
26 kommentarer og 1 løsning
Form validation
jeg har en indkøbskurv hvor brugeren skal kunne opdatere indholdet. til hvert produkt er der knyttet 2 priser (1 stk pris og 6 stk pris) - hvordan laver jeg et form check hvor feltet der opdateres skal kunne deles med 6 hvis prisen i kurven er en 6 stk pris ?
dummy :)
If Indkoebskurv.Pris = Indkoebskurv.Pris_DKK Then opdaterFelt skal kunne divideres med 6 alert ("tallet skal kunne divideres med 6") Else submit form
hvad gør denne ?: var objField = document.getElementById( "txt" ); ved ikke hvad jeg skal angive i txt feltet
jeg skal teste om den 'Pris' der er angivet for den pågælende record er den samme som 'Pris_DKK_v6' fra rsIndkoebskurv. hvis den er det skal tallet kunne divideres med 6
denne linje hiver fat i det form element på siden. Dette form element hedder 'txt'. hvis du skal have fat i et andet form element, så skal du bare angive id'et til dette felt istedet for 'txt'
Du skriver: "jeg skal teste om den 'Pris' der er angivet for den pågælende record er den samme som 'Pris_DKK_v6' fra rsIndkoebskurv. hvis den er det skal tallet kunne divideres med 6". når jeg kigger på den kode du har postet, så er det ikke noget af det du skriver der står i stil med koden. kan du ikke poste en record fra den færdige HTML istedenfor noget ASP kode ?
Hmm ... jeg tror jeg ville have gjort det på en anden måde. som jeg har forstået det, så skal du lade brugeren kunne angive enten 1 eller 6 i feltet 'opdaterField', men såvidt jeg kan se, så kan ikke brugeren ændre prisen på varen. Jeg ville have gjort det på den måde at *jeg* bestemmer hvad brugeren kan få lov til at angive ... på den måde bliver brugervenligheden større. Jeg ville have gjort det på den måde at 'opdaterField' er en 'select' box, med værdierne 1 og 6... MEN ... værdien 6 bliver kun akrevet ud *hvis* værdien i 'Pris_DKK_v6' er delelig med 6 - u c ? Dit formular ser dermed sådan ud:
jeg er nødt til at gøre det som løsning 2 - for de skal kunne indaste 4 hvis det er 1 stk prisen og 18 hvis det er 6 stk prisen. min kode ser sådan ud, men det virker ikke:
for det første, så må jeg sige at det ikke ser ud til at være kodet særlig smart :-| no offence, men hvorfor skriver du ud javascriptet i hver eneste iteration i din loop??.
Anyway ... har jeg ret i at du skal *kun* tjekke for om antallet er deleligt med 6 hvis der er angivet en pris i 'Pris_DKK_v6' ??
kodningen - det har du ret i, jeg er en kegle. skal jeg tage javascriptet længere ud af koden
ja - det har du ret i: hvis rsIndkoebskurv.Fields.Item("Pris").Value = rsIndkoebskurv.Fields.Item("Pris_DKK_v6").Value så skal den checke om det er deleligt med 6
function validate( objForm ) { if( objForm.MM_pris_dkk_v6.value != "0" && objForm.MM_pris_dkk_v6.value % 6 == 0 ) { if( objForm.opdaterField.value % 6 != 0 ) { alert( "Tallet skal kunne deles med 6" ); return false; } } return true; }
Javascriptet sætter du ind helt i toppen af din side. det er ikke noget point i at du inkluderer det mere end én gang.
denne stump kode gør følgende:
*hvis* der er angivet en værdi i 'Pris_DKK_v6', så tjekker den om værdien i 'Pris_DKK_v6' er delelig med 6. hvis værdien er delelig med 6, så tjekkes der på værdien der er skrevet ind i 'antal' feltet. hvis denne værdi ikke er delelig med 6, så kommer der en alert.
hvis det ikke er dette du skal have, så må du forklare dig bedre. dette er et *meget* simpelt "problem", men med dårlige forklaringer, så er det nærmest umuligt at forstå. du skal huske på at jeg overhovedet ikke kender dit system eller hvad det er du prøver på. nogle gange kan det være smart at prøve at formulere sig "udenfor" sit egentlige problemområde ... prøve at formulere sig på en mere generel måde der ikke relaterer sig til dit faktiske problem... fx sådan:
jeg har et problem med noget validering af nogle felter. min bruger skal få lov til at taste ind et tal i en textbox. denne værdi skal jeg tjekke op mod en anden værdi, på den måde at hvis denne anden værdi er sådan og sådan, så skal den indtastede værdi kunne deles med 6 og blablabla ... eller bla bla bla
brugeren ligger produkter i kurven, jeg gemmer pris på produktet og antallet der ligges i kurven. i oversigten skal brugeren kunne opdatere antallet. bestiller brugeren 6 stk af produktet får de det til en billigere pris, men i oversigten skal de derfor også kun have mulighed for at hæve eller sænke antallet med en værdi der kan deles med 6. i mit recordset trækker jeg både indkobskurv og vin tabellen ud. der er i alt 3 priser i de to tabeller. i vin tabellen hvor produkterne oprettes er der Pris_DKK og Pris_DKK_v6 og i indkobskurv tabellen er der Pris. alt efter om brugeren køber 1 eller 6 flasker lagrer jeg den pågældende pris i 'Pris' kolonnen.
når brugeren så skal kunne opdatere indholdet i kurven så skal han for de produkter hvor Pris = Pris_DKK_v6 kun kunne opdatere med et antal der kan deles med 6
er det til at forstå ... jeg synes det er svært at forklare så det giver mening - håber dette hjælper
man skræmmer væk hvis man *ikke* forklarer sig godt nok ;-)
"ja - ved køb af 6 stk kan du kun købe et antal der kan deles med 6. beregning er helt præcis/perfekt."
hvis min beregning er korrekt, så ville jeg overhovedet ikke tænkt over at tjekke for om "antal" kan deles med 6 eller ikke, så ville jeg hellere have foretaget beregningen på ASP siden når siden bliver postet.
hvis dette er din asp side der modtager formularet:
ja - den havde jeg også tænkt på - men jeg tror bare ikke det giver mening for brugeren. med den løsning synes jeg ikke det er gennemskueligt hvad han betaler hvornår - altså hvornår han får den billige pris og hvornår han får den dyre...
hvis jeg nu skal lave en længere bedsked til brugeren. hvordan indsætter jeg så linieskrift i "Tallet skal kunne deles med 6" har prøvet med </p> </br> </n>
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.