13. september 2004 - 16:05Der er
61 kommentarer og 1 løsning
Ved fejl bliv i samme felt
Hej.
Kan man lave et eller andet hekseri så man bliver i samme indtastningsfelt efter en fejl ?
Jeg har en funktion der virker, men ved fejl kommer den med en alert, og når man svarer på den skifter formen til næste felt, som der også er et check på, og når man så vil gå tilbage kommer det felt med en fejl også :-)
Kan det lade sig gøre at få den til at blive samme sted efter en alert ?
Lav checket onsubmit og send folk til det første felt med fejl i !-)
Synes godt om
Slettet bruger
13. september 2004 - 16:14#4
>>> fennec - Det virkede ikke
>>> roenving - Mener du erstat med onChange ? Det virkede nemlig heller ikke. Det er en mange felters form, hvor der er rodet flere javascripts funktioner ind efterhånden.
Jeg ville lave een valideringsfunktion, som først reagerede når folk forsøgte en submit, og så enten lave en liste med alle fejl, eller bare validere een af gangen, alerte med felen(e) og så sende folk til det felt, hvor den første fejl var !-)
Synes godt om
Slettet bruger
13. september 2004 - 16:20#6
Jeg har denne først:
document.form1.CprNr.value = "";
og den virker godtnok. Den sletter det forkerte indhold.
men denne:
document.form1.CprNr.focus();
virker altså ikke. Jeg har prøvet den før da den bruges når man kommer ind på sideførste gang, for at få cursoren til at starte i den felt.
Synes godt om
Slettet bruger
13. september 2004 - 16:21#7
Ok roenving, men nu er jeg ikke særlig meget inde i dette, men jeg øver mig. Får at komme videre må man jo spørge jer :-)
Ja det virker lige umiddelbart noget uoverskueligt for en nybegynder. Men nu tror jeg kun jeg mangler at få dette til at virke, så er jeg vist færdig med denne test. Så det vil være meget volsomt at skulle lave det hele om nu. Får jeg nye idér kan jeg jo prøve at bruge sådan noget næste gang :-)
Men jeg vil helst have at fejlen kommer lige med det samme og ikke når alle felter er udfyldt.
Men hvad kan grunden være til at det foreslåede ikke virker ?
-- hvis du bruger det onchange kunne man gætte på, at eventen kommer før den event, du har udløst, nemlig at sætte fokus på et andet felt
-- hvis jeg har forstået events i sådan en situation rigtigt, kommer de i denne rækkefølge:
onchange på feltet, som forlades onblur på feltet, som forlades onfocus på feltet, man flytter til
-- hvilket kort sagt vil sige, at det at sætte fokus på et felt 'trækker' to andre events med sig, som afvikles _før_ og det betyder jo så at handlingen, som sætter fokus på det næste felt, udføres _efter_ og altså uafhængigt af din .focus()-ting !-)
Synes godt om
Slettet bruger
13. september 2004 - 16:51#11
Det vil så på godt dansk sige: det kan du ikke :-)
Det må jeg så leve med. Vil du lægge et svar, så deler i puljen :-)
Når man ikke kan må man jo lade det ligge til man bliver klogere og kan lave det anderledes, men jeg vil ikke igang med den helt store omprogrammering af dette nu, så det må vente til en andengang. TAK for forsøgene.
<script language="JavaScript" type="text/javascript"> function cprTjeck(frm){ var cpr = frm.cpr.value; if(cpr.match(/\d{6}\-?\d{4}/)){ var aar = +cpr.substr(4,2)+2000; aar -= (aar>new Date().getFullYear())?100:0; var maaned = +cpr.substr(2,2)-1; var dag = +cpr.substr(0,2); var dato = new Date(aar,maaned,dag); cpr = cpr.replace(/\-/g,""); var chk = 0; for(i=9;i>-1;i--){ chk += (+cpr.charAt(i))*((i>2)?(10-i):(4-i)); } if(chk%11==0&&dato.getFullYear()==aar&&dato.getMonth()==maaned&&dato.getDate()==dag)return true; } alert("ikke valid CPR"); return false; } </script>
-- absolut ikke grov-testet, men teknikkerne er klassiske !-)
Synes godt om
Slettet bruger
13. september 2004 - 18:10#31
Efter lidt tilretning, virker det. Om det er bedre end det jeg har ved jeg ikke, og jeg ved heller ikke om det var super godt. Jeg smider det herunder, så kan I jo studere om de udfører det samme, de forskellige script :-)
- og jeg lader allernådigst være med at fumle en anden gang ;o)
Synes godt om
Slettet bruger
13. september 2004 - 19:36#37
Hmmm, jo, det ser meget teknisk ud. Gad vide hvad der sker i det ?
Og jeg har virkelig hygget mig over den med nummerpladen. Desværre kan jeg ikke bruge den i virkeligheden. Jeg tror ikke at alle kan klare den form for humor :-)
Det er godt du ikke fumler mere, så er der jo en chance for at redde dig lidt points en anden gang ;-)
Synes godt om
Slettet bruger
14. september 2004 - 10:12#38
grunken - ku du ikke forklare hvordan det virker ? og hvis jeg forstår lidt af det vil jeg da også gerne give dig lidt points. Men jeg ved ikke om jeg kan bruge det istedet for det roenving sendte. Hvad er forskellen på dem ? Der er to funktioner deri, og hvordan virker de. Umiddelbart ser det jo ud til at kun den ene kaldes, men der er jo nok noget hekseri deri som ikke jeg ikke kan gennemskue.
Den første funktion mod er en sammenskrivning af 3-4 linjer i min funktion ...
Den anden funktion checker først om en dato har et sandsynligt format nemlig dato 01-31, måned 01-12, to cifre for år, evt. en bindestreg og så 4 cifre ...
Hvis det dur [.match(reg)], checkes så efter modulus-reglen i den første funktion (efter først at have fjernet en eventuel bindestreg med .replace !-)
-- men den fanger så ikke den 31. september og andre lignende fejl, som min funktion gør !-)
/^...$/ betyder at det skal være helt fra starten og så helt til slutningen af strengen
(0?[1-9]|[12]\d|3[01]) skal deles i 3 stumper ved de to |'er, så det betyder enten et 0 efterfulgt af et tal mellem 1 og 9, et 1- eller 2-tal efterfulgt af et vilkårligt ciffer eller et 3-tal efterfulgt af et 0 eller 1-tal
(0?[1-9]|1[0-2]) skal ligeledes deles op i to stumper ved |'en, og betyder altså et 0 efterfulgt af et tal mellem 1 og 9 eller et 1-tal efterfulgt af et tal mellem 0 og 2
(\d{2}) betyder simpelthen 2 cifre !-)
\-? betyder eventuelt en bindestreg, og så til sidst 4 cifre: (\d{4})
-- og snakker vi endelig om at lave den mere sexy kan man faktisk godt det:
function check(f){ reg = /^(0[1-9]|[12]\d|3[01])(0[1-9]|1[0-2])\d\d-?\d{4}$/; val = ((f.value.match(reg)?mod(f.value.replace(/\-/gi,"")):1)==0);
if(!val)alert("jeg bad om et cprnummer - ikke en nummerplade"); return val; }
Synes godt om
Slettet bruger
14. september 2004 - 11:40#40
Ok, det er noget værre volapyk ;-) Nå men det skal nok lige læses nogen gange. Hvad var det så du skrev om det "at visse 7.-cifre bestemmer århundrede " din function ikke testede ?
Synes godt om
Slettet bruger
14. september 2004 - 11:48#41
Kan man iøvrigt fjerne en evt. bindestreg og indsætte tallet uden den i feltet efter et check ? :-) Det ville jo være smart, så var det ligegyldigt hvordan folk taster tallet ind. Men det skal så vidt jeg ved gemmes uden stregen.
-- 0xxx, 1xxx, 2xxx og 3xxx: 1900-1999 -- 4xxx og 9xxx: 1937-2036 -- 5xxx, 6xxx, 7xxx og 8xxx: 1858-1899 og 2000-2057
-- og det var igen google !-)
Synes godt om
Slettet bruger
14. september 2004 - 14:09#44
Ihhh, hvor er du altså avanceret .-) Kan jeg så smide den nye ind istedet for den forrige du sendte som jeg bruger nu ? Fjerner den så bindestregen og lader tallet stå uden ? Hvis det er tilfældet er det dæleme smart.
Jepz, du skal 'bare' sørge for at feltnavnet er rigtigt i den tilføjede linje (lige før return true !-)
Synes godt om
Slettet bruger
14. september 2004 - 14:34#46
Jeg skulle lige rette navne et par steder, men det ser ud til at virke. Tak for det. Skal jeg lave lidt points til dig for dit store arbejde - jeg havde aldrig fundet ud af det.
Da du nu har så godt fat i det her, fristes jeg til at spørge dig om noget. I dette spørgsmål:
har jeg fået hjælp til at validere et par felter, men kan man på en eller anden måde få den til at huske variablerne, eller holde submit knappen enablet når email og kode passer sammen:-) Den husker alle variabler i php sessions, men det kan javascript ikke se, så når første bestilling er afsendt, så kan man ikke igen aktivere submit, uden at skrive det om. Måske kan man bruge noget andet en onchange i formfeltet ?
Det var en større en. Jeg håber ikke det gør noget.
Ja der huskes de, men det kan javascriptet ikke finde ud af at checke anden gang. Det virker perfekt første gang, men derefter kan den ikke huske variablerne i javascriptet. Det er åbenbart et problem for man kan så kun lave en bestilling, og skal så skrive email og kode ind igen. Gør man det virker det, men er det ikke lidt fjollet når de nu står der i forvejen :-)
Synes godt om
Slettet bruger
15. september 2004 - 11:40#49
Nu har jeg hekset rundt med at få php variablerne over i javascript variabler, men det lykkedes ikke.
roenving du lærte mig at gøre det i et tidligere spørgsmål og jeg har forsøgt mig med at gøre kunsten efter. Det vil den ikke. Enten kommer der en fejl, eller også skriver den variablen på siden. Kan man overhovedet flytte en php variabel over i en javascript variabel ?
Ja,det ser det ud til, men der er ikke nogen der har fortalt mig at der skal stå javascript rundt omkring variablerne. Det skal lige afprøves i virkeligheden. Jeg håber det virker.
-- har ingen fortalt dig at javascript skal stå i script-tags ?-)
Synes godt om
Slettet bruger
15. september 2004 - 17:50#53
Jo det har jeg jo set, men det faldt mig ikke lige ind :-) Jeg har jo flere gange skrevet at jeg ikke rigtig vidste noget om det, men jeg lærer da lidt ind imellem.
Normalt vil man jo heller ikke have det som en selvstændig linje, men placere den inde i en eksisterende javascript-blok !-)
Synes godt om
Slettet bruger
15. september 2004 - 18:00#55
Thja, nu har kjeg lagt det ind, men det fungerer ikke. Det kan er sikkert være flere grunde til, men jeg synes ikke jeg kan finde den rigtige måde. Det ligner heller ikke php kode når det står inde i javascriptet.
og det virker efter første bestilling. Når man har udfyldt en formular og sender bestillingen og variablerne gemmes i MySQL, er alle variabler lagt i php sessions, og dem der skal huskes vises igen i formularen. Men lige nøjagtig det kodecheck virker kun når man starter helt forfra hvergang. Det ville jo være noget smartere at man kun indskriver sine oplysninger een gang, og kan gennemføre flere bestillinger.
Synes godt om
Slettet bruger
15. september 2004 - 18:28#58
jeg glemte lige denne linie, det er jo den der skal enables:
Det er utroligt. Når man skriver forsvinder indlæget når man sender. Det er efterhånden sket nogen gange.
Nå men jeg må jo prøve igen.
Jeg fandt ud af at denne linie:
"<?php $_SESSION['Email']; ?>";
ikke må indeholde php eller mellemrum, så kommer der en parse error. Men gør man sådan:
"<?=$_SESSION['Email'];?>";
kommer der ingen fejl, men det virker heller ikke. Jeg fatter mindre og mindre, da jeg kan forstå på jer at det skulle virke sådan. Jeg kan ikke finde ud af det, kan I ?
Synes godt om
Slettet bruger
15. september 2004 - 20:02#60
Nu glemte jeg igen det lighedstegn
"<?php = $_SESSION['Email']; ?>";
det var sådan denførste linie skulle være ovenover.
Synes godt om
Slettet bruger
16. september 2004 - 19:05#61
Har I slet ingen gode idér ?
Synes godt om
Slettet bruger
17. september 2004 - 19:23#62
Nå,jeg har jo sagt jeg ikke ved så meget om det javascript. Men jeg kanforestille mig at I sidder og smågriner i skægget (hvis I har et) :-)
Der står jo onchange i den linie der skal kalde valideringen, og ved at ændre det til onBlur virker det nu, så det var da skønt.
roenving, du lavede en del extra og jeg har een gang spurgt din om du ikke ville have lidt points for det, men det svarede du ikke på. Jeg vil lige være sikker inden jeg glemmer alt om min uvidenhed her :-)
Synes godt om
Ny brugerNybegynder
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.