21. oktober 2003 - 14:49Der er
21 kommentarer og 2 løsninger
Validere kundenummer
Jeg har et system hvor folk der bestiller skal indtaste telefonnummer. Dette skal selvfølgelig valideres - og det har jeg også fået gjort. Nu har kunden imidlertid informeret mig om at enkelte kunder har et kundenummer der skal indtastes i stedet for telefonnummer. Kundenummeret har følgende format:
0100000 0200000 .. 2500000
Jeg vil gerne kunne checke om teksten indtastet i et tekstfelt er ENTEN et telfonnr. eller et af ovennævnte kundenumre. Jeg koder normalt kun VBScript, og da jeg gerne vil være sikker på at alle det virker på alle browsere, skal jeg altså bruge det i JavaScript.
Pt. ser min kode ud som nedenfor - det er ikke skide optimalt, det ved jeg, men hvis det kan flettes ind her, er det helt perfekt. Ellers modtager jeg også gerne bud på en omskrivning af nedenstående.
if (document.all('tlf').value == '') { alert ('Du skal udfylde feltet \"Telefonnr.\"'); } else { if (document.all('tlf').value.length != 8) { alert ('Dit telefonnr. skal være på 8 cifre.'); } else { if (isNaN(document.all('tlf').value) == true) { alert ('Dit telefonnummer må kun indeholde tal'); } else
Generelt søger jeg faktisk en der har mod på at konveretere en række (mindre) VBScripts til JavaScript på timeløn. Jeg er selvstændig programmør, og udvikler som nævnt i VB / VB.Net normalt. Skriv hvis det har interesse.
Måske noget i den her stil: if (document.formnavn.tlf.value.length < 7 || document.formnavn.tlf.value.length > 8) alert ('Indtast et rigtigt telefon/kundenummer'); else;
Ikke helt. Den skal også checke om værdien af de første to felter er imellem 1 og 25, samt om resten er nuller. Så det skal altså passe 100% på skabelonen... Men ellers er idéen fin.
eller på denne måde - chekker også om telefonnummeret er rigtigt (uden bogstaver og den slags: function valider() { frm = document.formnavn.tlf.value; if (frm.length == 7) { if (parseInt(frm.substr(0,2)) < 1 || parseInt(frm.substr(0,2)) > 25) retur = fejl("Indtast et rigtigt kundenummer"); else if (parseInt(frm.substr(2)) != 0) retur = fejl('Indtast et rigtigt kundenummer'); else retur = true; } else if (parseInt(frm).toString().length == 8) retur = true; else retur = fejl('Indtast et rigtigt kunde/telefonnummer'); return retur; } function fejl(tekst) { alert(tekst); return false; }
igrunden behøver du ikke skrive retur = ...., men blot skrive return ....
og så dropppe return retur til sidst :-)
Angående opgaven med vbscript (for løn) - kan du stille den inde i Opgave-kategorien. Bare husk at du ikke skal give point hvis du også udlover andet (fx penge). Det sådan en regel vi har herinde :-)
[krøllet-snabel] og [prik] - den har jeg nu aldrig set før når man prøver at slippe for spam ;-) (men det virker vel fortræffeligt)
Er der egentlig nogen større forskel på dit og mit script olebole??? (ud over at du bruger regexp og jeg bare almindelig if...else -formpjat... (ikke fordi jeg påstår min er bedre)
Hmmm ... jeg har på fornemmelsen, spørgeren ikke rigtig har tænkt spørgsmålet ordentligt igennem. Hvis ikke, der er (i kundenummeret) tale om et tal mellem 1 og 25 - efterfulgt af 5 nuller. Kan næsten et hvilket somhelst tal accepteres - og validering nærmest overflødigt ...(?)
Ja, der er stor forskel på dit og mit script. Mit checker (udover den tomme streng) for, om der er tale om et tal mellem 1 og 25, efterfulgt af 5 nuller. Eller er et 8-ciffret tal. /mvh
det gør min egentlig også, bare på en anden - måske dårligere måde: if (parseInt(frm.substr(0,2)) < 1 || parseInt(frm.substr(0,2)) > 25) retur = fejl("Indtast et rigtigt kundenummer"); else if (parseInt(frm.substr(2)) != 0) retur = fejl('Indtast et rigtigt kundenummer');
Den chekker bare først om de første to tal er under 1 eller over 25 - og DERERFTER og de sidste cifre er nuller eller hvad de nu er...
nåja - det en fejl. Sådan nu burde det virke som det skal: function valider() { frm = document.formnavn.tlf.value; if (frm.length == 7) { if (parseInt(frm.substr(0,2)) < 1 || parseInt(frm.substr(0,2)) > 25) return fejl("Indtast et rigtigt kundenummer"); else if (frm.substr(2) != "00000") return fejl('Indtast et rigtigt kundenummer'); else return true; } else if (parseInt(frm).toString().length == 8) return true; else return fejl('Indtast et rigtigt kunde/telefonnummer'); } function fejl(tekst) { alert(tekst); return false; }
Smider lige et svar så...medmindre der er flere fejl ;-)
Jeg tjekker scripts'ne ud senere i dag. Så får den der giver det bedste resultat point. Jo, jeg har tænkt det fint igennem. Jeg ved godt at man kan skrive et hvilket som helst tal som telefonnr., men det er deres eget problem - det bliver alligevel tjekket manuelt, inden det ryger ind i økonomisystemet. Jeg vil bare gerne have den undtagelse, at hvis det passer med et kundenr., så får de lov at submitte alligevel.
Hmmm... Jeg endte faktisk med at bruge Roenvigs løsning. Men da han ikke har oprettet sine indlæg som et svar, må jeg vel bare fordele pointene mellem Olebole og Skovenborg?
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.