18. september 2005 - 16:08Der er
72 kommentarer og 1 løsning
modificering af validerings snask
hey eksperter.
fik lavet dette som et led til en kalender.
<script type="text/javascript"> function valider(){ var kl1 = document.getElementById('kl1'); var kl2 = document.getElementById('kl2'); var regexp = new RegExp('([0-1][0-9]|2[0-3])\.[0-5][0-9]$');
if (kl1.value == kl2.value) { alert('Du skal angive 2 forskellige tidspunkter.'); return false; } else if(kl1.value > kl2.value) { alert('Det angivet \'Fra\' tidspunkt er senere det angivet \'Til\' tidspinkt'); return false; } else if (!kl1.value.match(regexp)){ alert('Det angivet \'Fra\' tidspunkt er ugyldigt.'); return false; } else if (!kl2.value.match(regexp)) { alert('Det angivet \'Til\' tidspunkt er ugyldigt.'); return false; } else{ return true; } } </script>
Har nu tænkt mig at genbruge det. men skal have den til at tjekke om tingene er tal. er tingene udfyldt. osv.
Den kan du fint bruge til telefonnumre (hvis der ikke må være f.eks. mellemrum) - men i et CPR-nummer er der jo en bindestreg. Derfor: Hvad er de nøjagtige formater? :)
okey og hvis jeg så vil f.eks. teste om fornavn er udfyldt, så vil den jo så komme op og brokke sig... derfor jeg var lidt ude efter navn, så den kigger på det er meningen det skal være tal eller bogstaver.
så tænkte lidt på om man ikke kunne lave noget ala.
return valider(tal); , return valider(udfyldt); og return valider(email);
og så lave en
if(inp == "tal") { if(bla bla bla ikke passer) { alert("Du har lige dummet dig bigtime.."); return false; } } elseif (inp == "udfyldt") { if ( er den udfyldt) { alert ("buuuh!"); return false; } }
<script type="text/javascript"> function valider(inp,p){
var type = 'p'; var regexp = new RegExp('^[0-9]+$');
if (!inp.value.match(regexp) && type.value=='tal') { alert('Dit Cpr Nummer må ikke indeholde bogstaver.'); inp.focus(); return false; } return true; } </script>
Men har lagt mærke til at hvis man f.eks. skriver bogstaver i cpr, og så klikker ned på fornavn, så låser den med henholdvis at spytte fejl ud på cpr og derefter fejl ud på fornavn, og der er intet du kan gøre, andet end at kværne den i process linien. :(
Jeg ville selv teste, når hele formen blev submittet ...
-- og til regexpen med bogstaver, så skal du jo ret langt ud, da også é, ï og mange andre bogstaver er mulige i nave, som findes i Danmark !-)
-- f.eks. har jeg denne streng til regexp-konstruktion:
var ordtegn = "\\wáàãââæåçéèêëìíîïñòóôõöøùúûüýÿ";
\w betyder bogstaver, tal og _ ...
-- og begrebet bogstaver tolkes højst forskelligt i browserne, IE accepterer kun a-z, mens FF tager de bogstaver, som er lovlige til det locale, som er angivet i bruger-indstillingerne !o]
-- men en simpel metode er at give sine inputs navn, så man kan checke det op imod deres navne, f.eks. mailAdresse, mailKontor, talCPR, talPostNr, navnFornavn, navnEfternavn ...
ja netop gik lidt stærkt der, men du ved hvad jeg mener. *G*
lad os nu sige at der er mere end 1 fejl i formularen, stopper den så efter den første?? eller laver den samme nummer som jeg beskrev før, med at den shuffler mellem fejl beskederne og lyser browseren fuldstændigt?
-- lidt irriterende, hvis der ikke tydeligt er gjort opmærksom på, at mange felter skal udfyldes, men rart nok, når det er ret indlysende, hvilke der skal udfyldes !-)
hvis jeg smider scriptet op i headeren, virker den heller ikke.. har prøvet at tilføje java script: og java script: i min onsubmit="" dims.. har også prøvet onSubmit. heller intet... :(
Derfor skrev jeg netop 'bogstavs-tegn' ... der er mellemrum ikke indregnet. Det var ikke direkte møntet på dit problem, men på roenvings lange streng af special-tegn :)
Naturligvis skal der også inkluderes mellemrum, underscore, m.m - men det har roenving selv styr på. Jeg er bare ikke sikker på, han var klar over, at langt de fleste tegn med accenter ligger i spannet mellem oktalværdierne \300-\377 ;o)
olebole -> oh... tror bare jeg blander mig uden om jeres snak, for så meget ved jeg heller ikke om javascript.. men.. det er MIT spørgsmål. *Griner* :D
<script type="text/javascript"> function valider(f){ var regtal = new RegExp('^[0-9]+$'); var regmail = new RegExp("^.*@[\\w][\\w\\.-]*\\.[a-z]{2-6}$","i"); var inp;
var inpTxt = new Array(); inpTxt['udfyldCity'] = 'Du skal angive en By.'; inpTxt['udfyldAdresse'] = 'Din Adresse skal udfyldes.'; inpTxt['talCpr_part1'] = 'Første del af dit Cpr Nummer skal udfyldes og må ikke indeholde bogstaver.'; inpTxt['talCpr_part2'] = 'Anden del af dit Cpr Nummer skal udfyldes, og må ikke indeholde bogstaver.';
olebole -> nej rolig nu.. det er bare mega frustrerne...
for er ude i noget:
if(inp.name.indexOf("Telefon")==0 && inp.value.length==0 && inp.name.indexOf("Mobil")==0 && inp.value.length==0) { alert('Telefon er ikke udfyldt, men Mobil er.'); return false; }
snask.. sådan at kun hvis begge dele er tomme, så skal den melde fejl... men det virker ikke... :(
og aner ikke mine levende råd, er ikke så god til javascript, for har aldrig rigtigt haft brugt for det. :(
var telefon = document.getElementById('telefon'); var mobil = document.getElementById('mobil');
og så
if(telefon.value==0 && mobil.value==0) { alert('Du skal udfylde enten Telefon eller Mobil nummer.'); return false; }
så virker det.. hvis jeg undlader telefon, og udfylder mobil, går den igennem.. hvis jeg udfylder telefon men undlaver mobil går den også igennem, udfylder jeg ingen af dem, får jeg fejlbeskeden, som planlagt.
<script type="text/javascript"> function valider(f){ var regtal = new RegExp('^[0-9]+$'); var regmail = new RegExp("^.*@[\\w][\\w\\.-]*\\.[a-z]{2-6}$","i"); var inp; var telefon = document.getElementById('telefon'); var mobil = document.getElementById('mobil');
var inpTxt = new Array(); inpTxt['talCpr_part1'] = 'Første del af dit Cpr Nummer skal udfyldes og må ikke indeholde bogstaver.'; inpTxt['talCpr_part2'] = 'Anden del af dit Cpr Nummer skal udfyldes, og må ikke indeholde bogstaver.'; inpTxt['udfyldtFornavn'] = 'Du skal angive dit Fornavn og evt. Mellemnavn.'; inpTxt['udfyldtEfternavn'] = 'Du skal angive dit Efternavn.'; inpTxt['udfyldtAdresse'] = 'Din Adresse skal udfyldes.'; inpTxt['talPostnr'] = 'Du skal angive et Postnummer.'; inpTxt['udfyldtCity'] = 'Du skal angive en By.';
if(telefon.value==0 && mobil.value==0) { alert('Du skal udfylde enten Telefon eller Mobil nummer.'); return false; } else { if(telefon.value!=0 && !telefon.value.match(regtal)) { alert('Dit Telefon nummer må kun bestå af tal.'); return false; } else if(mobil.value!=0 && !mobil.value.match(regtal)) { alert('Dit Mobil nummer må kun bestå af tal.'); return false; } else if(telefon.value!=0 && telefon.value.length<8) { alert('Du har ikke udfyldt Telefon nummeret korrekt.\nEt Telefon nummer består af 8 tal.'); return false; } else if(mobil.value!=0 && mobil.value.length<8) { alert('Du har ikke udfyldt dit Mobil nummer korrekt.\nEt Mobil nummer består af 8 tal.'); return false; } } } } return true; } </script>
felterne har så fået tilføjet enten "tal", "email", "udfyldt" eller sat et ID (mobil og telefon nummer)
sjovt.. for har haft fat i andre regexp fra nettet hvor der står , imellem 2 og 6 eller 2 og 4, eller hvad de nu har skrevet, og det virkede heller ikke, men tester lige
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.