"Justin Lee" <Justin@pc.dk> skrev i en meddelelse
news:apm0mf$7gc$1@sunsite.dk...
> Har forsøgt at kalde samme funktion - testForIndhold - med
> forskellige efterfølgende Forms, men har oplevet nogle problemer
> mht. den ønskede handling.
>
> **************************************************
> Funktionen:
>
> <script type="text/javascript">
> function testForIndhold()
> {
> error = 0;
> if((document.forms[0].feltNavn.value=='') && (error==0))
> {
> alert("Tekstfeltet SKAL udfyldes!");
> document.forms[0].feltNavn.focus();
> error == 1;
> }
> }
> </script>
> **************************************************
> Kald til funktionen:
>
> <input type="text" name="fname" onBlur="testForIndhold(); return
> false;" size="25" maxlength="25" value="">
>
> og
>
> <input type="text" name="lname" onBlur="testForIndhold(); return
> false;" size="25" maxlength="25" value="">
> **************************************************
> Har prøvet at sende forskellige parametre med, såsom (this.value)
> og (this.value, feltNavn) - hvor feltnavn er (name="") for den
> pågældende form....
>
> Har dog oplevet at den enten går i "selvsving" dvs. fortsætter
> med at prompte med alertbeskeden i en evig cirkel....
> eller focus bliver sendt til næste form i stedet for at gå
> tilbage til samme form, der kaldte funktionen.
>
> Har på nuværende tidspunkt strirret mig blind på problemet, så
> måske kan jeg bare ikke se skoven for bare træer.
>
> Ønsker ikke at skulle lave en masse "if'er" for hver form.
>
> Så hvis nogen har siddet med et tilsvarende problem vil det glæde
> mig, såfremt vedkommende er kommet frem til en acceptabel løsning
>
>
> --
> Vil du lære at kode HTML, XHTML, CSS, SSI eller ASP ???
> - Pædagogiske tutorials på dansk
> - Kom godt i gang med koderne
> KLIK HER! =>
http://www.html.dk/tutorials
Hej Justin.
Hvis jeg læser din kode korrekt så ønsker du at teste indholdet i et eller
andet tekst input felt. Hvis feltet er tomt skal fokus sættes tilbage til
det inputfelt som brugeren glemte at udfylde.
For det først skal du huske at give den værdi du ønsker at teste med som
argument til funktionen. Da du både skal teste for value attributten og
kalde focus() funktionen skal du benytte 'this' referencen.
Hvis du virkelig mener at brugeren ikke må sætte fokus på noget som helst
andet før der er blevet indtastet noget indhold i form elementet så skal
der gemmes lidt mere information end blot en error værdi og vi skal vide
hvilket element der er starter onBlur eventen.
Jeg har lavet et eksempel der viser hvorledes det kunne gøres. Har ikke helt
gennemtestet det men mener at det skulle virke
<script type="text/javascript">
var currentErrorObject = null; // Reference til det objekt der mangler at
blive udfyldt
function testForIndhold( anInputElement, triggerEvent ) {
if( (anInputElement.value == '' ) && ( ( triggerEvent.srcElement ==
currentErrorObject ) || currentErrorObject == null ) ) {
alert("Tekstfeltet SKAL udfyldes!");
currentErrorObject = anInputElement;
anInputElement.focus();
}
else { // Hvis der er blevet indtastet en værdi nulstilles
currentErrorObject
currentErrorObject = null;
}
}
</script>
<form name="tester">
<input type="text" name="fname" onBlur="testForIndhold( this, event );"
size="25" maxlength="25" value="">
<input type="text" name="lname" onBlur="testForIndhold( this, event );"
size="25" maxlength="25" value="">
</form>
Venlig Hilsen
Jacob Winther
IT-C
---
Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (
http://www.grisoft.com).
Version: 6.0.408 / Virus Database: 230 - Release Date: 24-10-2002