19. april 2009 - 21:07Der er
16 kommentarer og 2 løsninger
Form validation - hvordan udskriver jeg tekst under <input>?
Hej Eksperter.
Som overskriften antyder vil jeg gerne, hvis der er en fejl i det indtastede, udskrive hvad fejlen er, under det tilhørende <input> tag.
Det skal siges at jeg er forholdsvis ny i JavaScript :)
Jeg har fundet eksempler på hvordan fejlen kan udskrives med onSubmit="return formValidation(this)"; hvori funktionen formValidation() så returner alert(). Det fungerer - men det er bare ikke sådan jeg vil have det ;)
du kan lave en div under den pågældende input, som evt, har et id der nemt kan "regnes ud" ud fra navn/id på inputtet, så du kan lave den rimelig flexibel.
du skal ikke bruge innerHTML!! (hvis du er grøn i JS, kan du ligeså godt starte med at lære DOM med det samme, inden du overhovedet finder ud af hvad innerhtml er ;) )
og til noget så simpelt, er det NÆSTEN lige så nemt at bruge korrekt DOM.
smid hvad du har nu, så skal jeg se om jeg kan lave det om til det du ønsker.
Jeg vil gerne lige se hvad du kan gøre. Det skal siges at det jo er et script jeg har fundet, men forstår godt helheden:
<html> <head> <title>WebCheatSheet - JavaScript Tutorial</title> <script type="text/javascript"> function validatePhone(fld) { var error = ""; var stripped = fld.value.replace(/[\(\)\.\-\ ]/g, '');
if (fld.value == "") { error = "You didn't enter a phone number.\n"; fld.style.background = 'Yellow'; } else if (isNaN(parseInt(stripped))) { error = "The phone number contains illegal characters.\n"; fld.style.background = 'Yellow'; } else if (!(stripped.length == 10)) { error = "The phone number is the wrong length. Make sure you included an area code.\n"; fld.style.background = 'Yellow'; } return error; } function trim(s) { return s.replace(/^\s+|\s+$/, ''); }
function validateEmail(fld) { var error=""; var tfld = trim(fld.value); // value of field with whitespace trimmed off var emailFilter = /^[^@]+@[^@.]+\.[^@]*\w\w$/ ; var illegalChars= /[\(\)\<\>\,\;\:\\\"\[\]]/ ;
if (fld.value == "") { fld.style.background = 'Yellow'; error = "You didn't enter an email address.\n"; } else if (!emailFilter.test(tfld)) { //test email for illegal characters fld.style.background = 'Yellow'; error = "Please enter a valid email address.\n"; } else if (fld.value.match(illegalChars)) { fld.style.background = 'Yellow'; error = "The email address contains illegal characters.\n"; } else { fld.style.background = 'White'; } return error; } function validatePassword(fld) { var error = ""; var illegalChars = /[\W_]/; // allow only letters and numbers
if (fld.value == "") { fld.style.background = 'Yellow'; error = "You didn't enter a password.\n"; } else if ((fld.value.length < 7) || (fld.value.length > 15)) { error = "The password is the wrong length. \n"; fld.style.background = 'Yellow'; } else if (illegalChars.test(fld.value)) { error = "The password contains illegal characters.\n"; fld.style.background = 'Yellow'; } else if (!((fld.value.search(/(a-z)+/)) && (fld.value.search(/(0-9)+/)))) { error = "The password must contain at least one numeral.\n"; fld.style.background = 'Yellow'; } else { fld.style.background = 'White'; } return error; } function validateUsername(fld) { var error = ""; var illegalChars = /\W/; // allow letters, numbers, and underscores
if (fld.value == "") { fld.style.background = 'Yellow'; error = "You didn't enter a username.\n"; } else if ((fld.value.length < 5) || (fld.value.length > 15)) { fld.style.background = 'Yellow'; error = "The username is the wrong length.\n"; } else if (illegalChars.test(fld.value)) { fld.style.background = 'Yellow'; error = "The username contains illegal characters.\n"; } else { fld.style.background = 'White'; } return error; } function validateEmpty(fld) { var error = "";
if (fld.value.length == 0) { fld.style.background = 'Yellow'; error = "The required field has not been filled in.\n" } else { fld.style.background = 'White'; } return error; } function validateFormOnSubmit(theForm) { var reason = "";
-> nikolai - du kan forhøje antallet af point i spørgsmålet til højre oppe i toppen. derefter accepterer du de svar du mener har hjulpet dig /svaret på dine spørgsmål, så deler den selv ligeligt
Jeg springer over i denne omgang. Det er splazz, der har taget 'slæbet', og de par småfejl, han lavede i sidste indlæg, ville han sagtens kunne rette ;o)
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.