/ Forside / Teknologi / Udvikling / Java Scripts / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Java Scripts
#NavnPoint
molokyle 5410
Klaudi 2799
smorch 2439
kim 1360
Harlekin 1134
bentjuul 984
gibson 800
severino 695
Random 675
10  konsulent.. 626
Validering?
Fra : Pelle Gøeg


Dato : 18-11-03 14:56

Hey,

Er begyndt at eksperimentere lidt med JavaScipt, da jeg skal lave en
side hvor nogle forms skal kontroleres for fejl.

Jeg har følgende script:

<script type="text/JavaScript" language="JavaScript">

function validateInput2() {
userInput = new String()
userInput = document.forms["nej"]["playerOrgName"].value
if (userInput.match("@"))
alert("Din email er korrekt.")
else
alert("Din email er ikke korrekt.")
}

</script>

jeg har html'en hvor jeg bruger scriptet her:

<form action="tilfoej_bruger.php" method="post" name="tilfoej"
onSubmit="validateInput2()">

Fulde Navn: <input type="text" name="playerOrgName" size="25" ><br />
Spiller Handle/nick: <input type="text" name="playerName" size="25"><br />
email: <input type="text" name="playerEmail" size="25"><br />

<input type="submit" value="Tilføj Spiller">

</form>

-----------------

Problemet er:

1. Jeg ønsker ikke en Alert box, men derimod skal der skrives en tekst
bag email input boxen ang emailen ikke er gyldig, hvordan gør jeg det.

har prøvet med noget med at sætte en variabel istedet for og prøve at
udskrive denne:
----------------
if (userInput.match("@"))
tjekker = new String()
tjekker = "Din email er korrekt."
else
tjekker = new String()
tjekker = "Din email er ikke korrekt."

<script language="javescript">document.write(tjekker)</script>
--------------

Men dette virker ikke, den udskriver ikke noget, hvad er galt?

2. Når jeg submitter formen, vil jeg have den valideret, hvis der findes
fejl så skal den ikke gennemføre submit men standse og vise mig fejlen
(som jeg har beskrevet).



Nogle der kan hjælpe med det?

Venligst
Pelle



 
 
Lasse Reichstein Nie~ (18-11-2003)
Kommentar
Fra : Lasse Reichstein Nie~


Dato : 18-11-03 17:12

Pelle Gøeg <sunsitenews@ghostofkathrine.dk> writes:

> Er begyndt at eksperimentere lidt med JavaScipt, da jeg skal lave en
> side hvor nogle forms skal kontroleres for fejl.

Altid en klassiker :)

> <script type="text/JavaScript" language="JavaScript">

Du kan godt undværer "language"-attributten, den er aldrig nødvendig
hvis du har "type" (som er påkrævet i HTML 4).

> function validateInput2() {

> userInput = new String()

Denne linje kan du slette. Det eneste den gør er at lave et nyt objekt og
lægge det i den (globale!) variabel. Næste linje overkriver den, så det er
rent spild.

> userInput = document.forms["nej"]["playerOrgName"].value

Jeg ville skrive:
var userInput = document.forms["nej"].elements["playerOrgName"].value;
"var" foran gør det til en lokal variabel, så du ikke forurener det globale
name-space. Tilføjelsen af ".elements" er nok mest pedanteri :)

> if (userInput.match("@"))
> alert("Din email er korrekt.")
> else
> alert("Din email er ikke korrekt.")

Du tester playerOrgName, ikke playerEmail. Det er vist ikke rigtigt :)

> </script>
>
> jeg har html'en hvor jeg bruger scriptet her:
>
> <form action="tilfoej_bruger.php" method="post" name="tilfoej"
> onSubmit="validateInput2()">

Hvis du vil stoppe form-submission hvis der er fejl, så ret onsubmit til
onsubmit="return validateInput2();"
og lad funktionen returnere false hvis der er en fejl.

> Problemet er:
>
> 1. Jeg ønsker ikke en Alert box, men derimod skal der skrives en tekst
> bag email input boxen ang emailen ikke er gyldig, hvordan gør jeg det.

Det afhænger af browseren. I de fleste moderne browsere kan du bruge
DOM-metoder.

Lav først plads til at skrive fejlen:

email: <input type="text" name="playerEmail" size="25">
<span id="playerEmailError"></span> <br />

Så kan du skrive i det span med funktionen:

---
function skrivTil(id,text) {
// find element.
var elem = document.getElementById(id);
// slet gammelt indhold
while(elem.hasChildNodes()) {
elem.removeChild(elem.lastChild);
}
// skriv nyt
elem.appendChild(document.createTextNode(text));
}
---
(denne funktion kan udbygges så den også virker i IE 4. Der er andre metoder
der virker i ældre browsere også.)

Så:
if (input.match("@")) {
skrivTil("plpayerEmailError","");
} else {
skrivTil("plpayerEmailError","Der er fejl i din e-mail-adresse!");
return false;
}

> har prøvet med noget med at sætte en variabel istedet for og prøve at
> udskrive denne:
> ----------------

Det her bliver udført når man prøver at submitte:

> if (userInput.match("@"))
> tjekker = new String()
> tjekker = "Din email er korrekt."
> else
> tjekker = new String()
> tjekker = "Din email er ikke korrekt."

mens dette bliver udført mens siden bliver læst:

> <script language="javescript">document.write(tjekker)</script>
^
Jeg kender ikke sproget "javEscript", og det gør browseren sikkert heller
ikke. Til gengæld kan den ikke finde ud af at gætte :)

Anyway, på det tidspunkt hvor dette bliver udført er tjekker slet ikke
en variabel endnu, så der sker en javascript-fejl, og script-tagget bliver
droppet.

> Men dette virker ikke, den udskriver ikke noget, hvad er galt?

Se ovenfor.

> 2. Når jeg submitter formen, vil jeg have den valideret, hvis der
> findes fejl så skal den ikke gennemføre submit men standse og vise mig
> fejlen (som jeg har beskrevet).

For at stoppe sunmit skal man returnere "false" fra onsubmit-handleren.
Det nemmeste er at have (helt generelt)
onsubmit="return validate(this);"
(det er nemmere at sende formen med som argument end at finde den fra
bunden).
Så skal validete-funktionen returnere false hvis der er fejl.


--
Lasse Reichstein Nielsen - lrn@hotpop.com
DHTML Death Colors: <URL:http://www.infimum.dk/HTML/rasterTriangleDOM.html>
'Faith without judgement merely degrades the spirit divine.'

Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408926
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste