04. oktober 2004 - 10:57Der er
21 kommentarer og 1 løsning
felt validering ved 'tab'
Hej
Nu har jeg ledt og ledt og prøvet en masse forskelligt, men kna ikke rigtig få det til at fungere, så nu starter jeg forfra.
Jeg skal bruge noget javascript til at validere på on et input felt er tomt når man tabber ud af feltet + om det er en gyldig email adresse (format) også når man tabber ud af feltet + f.eks længden af et nummer/text i et input felt (via regex vil jeg tro).
er der en venlig sjæl der vil lave et simpelt eksempel på oven stående - meget gerne med lidt kommentarer til.
hulla >> Bare lige for at nævne det, så behøver man ikke asp.net for at bruge regularexpressions. Det eksistere også i ASP og JavaScript (og mange andre sprog).
Denne har jeg fundet her på E i JavaScript katagorien. Reg Exp er dog stadig sort snak for mig, så spørg mig ikke om hvordan den fungere. Jeg prøver dog på at lære det.
tak>> det med regex ved jeg godt :o) - jeg leder mere efter en der kan vise mig hvordan man får det til at spille sammen - alt sammen, men jeg kigger lige på det ;o)
jeg ville gerne forstå dette: onBlur="CheckMail(this.value)"> hvad sker der der mere this og value og kan man altid benytte dette i et hvilket som helst input felt?
onBlur er den action, som bliver aktiveret når man forlader elementet.
"this" er en pointer/reference til det element du er i. I dette tilfælde kunne du også skrive "document.DinForm.email.value" i stedet for "this.value". "this" svarer altså til "document.DinForm.email". Hvis du f.eks ville ændre alle tjek til at ske når man sender formen kunne du gøre sådan:
Her svare "this" altså til "document.DinForm". "this" kan altid bruges på inputfelter og alle andre elementer (der er måske undtagelser, men jeg kender ikke nogen). Et eks. med "this" på et DIV element:
innerHTML er bare kaldet til at ændre alt tekst der står mellem de to div tags.
Nogen gange skal man måske have fat i flere elementer på en gang, eller funktionen skal køres fra et andet element (en knap). F.eks i en regne funktion. Her synes jeg det er nemmere at skrive navnene i funktionen.
takker for dine vise ord kan du så få det her jeg har bikset sammen til at virke?
og hvad med select bokse - hvordan gør man det også med onBlur?
hvd hvis man vil tjekke om et felt opfylder to betingelser f.eks. numerisk og ikke tomt - kan man gøre sådan her: onBlur="isNumeric(this.value); isEmpty(this.value)">
det er faktisk kun din funktion jeg kan få til at virke :o)
Går ud fra det er et tjek på at teksten skal indeholde xx antal tegn.
function AntalTegn(checkStr, min, max){ if (checkStr.length>=min && checkStr.length<=max) { return true; } else { alert('Skal være mellem '+ min +' og '+ max +' tegn lang') return false; } }
hvis nu jeg vil tjekke et inputfelt for om det er numerisk + mellem 4 og 8 tal - kan jeg tjekke det sådan her: onBlur="AntalTegn(this.value,4,10); IsNumeric(this.value)">
1. Jeps, det kan du. 2. jo, der skal helst være ; efter, men den kan godt finde ud af de alligevel. Det er dog bedst at have dem med. Min forglemmelse
Det slog mig lige, at det måske var en ide at ændre din overførsel, så du kun overfører "this". På den måde kan du nemlig sætte fokus/curseren tilbage til feltet hvor fejlen opstod. Du skal så til at bruge checkStr.value i dine funktioner, men det er mere brugervenligt.
function IsNumeric(checkStr) { if (isNaN(checkStr.value)) { alert('Skal være tal'); checkStr.focus(); return false; } else { return true; } } function AntalTegn(checkStr, min, max){ if (checkStr.value.length>=min && checkStr.value.length<=max) { return true; } else { alert('Skal være mellem '+ min +' og '+ max +' tegn lang'); checkStr.focus(); return false; } }
nu har jeg forsøgt at sætte fokus på empty og checkmail, men jeg har fået lavet et eller andet galt + Smid lige et svar - du har været en kanon hjælp - jeg er tilbage igen i aften og accepteter - skal til møde nu:
function IsEmpty(checkStr) { if ((checkStr.length==0) || (checkStr==null)) { alert("Feltet må ikke vær tomt!"); checkStr.focus(); } else { return false; } }
function IsNumeric(checkStr) { if (isNaN(checkStr.value)) { alert('Skal være tal'); checkStr.focus(); return false; } else { return true; } } function AntalTegn(checkStr, min, max){ if (checkStr.value.length>=min && checkStr.value.length<=max) { return true; } else { alert('Skal være mellem '+ min +' og '+ max +' tegn lang'); checkStr.focus(); return false; } }
</script>
<form> <input type"text" name="test" onBlur="CheckMail(this)"> mail <br> <input type"text" name="test" onBlur="IsEmpty(this)"> tom <br> <input type"text" name="test" onBlur="AntalTegn(this,4,10)"> mellem 4 og 10 tegn<br> <input type"text" name="test" onBlur="IsNumeric(this)"> Numerisk <br> <input type"text" name="test" onBlur="IsNumeric(this);AntalTegn(this,4,10);"> numerisk og mellem 4 og 10 <br> <input type"text" name="test"> </form>
roenving>> tak for input - de der regexp er lidt "krydrede"
fennec>> tusind tak for hjælpen
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.