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.'