Avatar billede goose Nybegynder
26. maj 2005 - 16:45 Der er 27 kommentarer og
1 løsning

Validering af radioknapper

Jeg bruger normalt følgende til at checke om et felt er udfyldt:

<script language="javascript">
<!--
function tjek_form_oplysning(){
var tjek = document.oplysning;

if(tjek.f01.value == ''){
alert('Du skal vælge gruppe');
tjek.f01.focus();
return false;
}
return true;
}
// -->
</SCRIPT>

Nu står jeg så med nogle radioknapper i en formular, men hvordan checker jeg lige dem hvis jeg gerne vil bruge "samme stil" som ovenstående ?

/Goose
Avatar billede thesurfer Nybegynder
26. maj 2005 - 16:47 #1
if (feltnavn.cheked)
mener at det er nok.. ellers.. if(feltnavn.checked == true)
Avatar billede thesurfer Nybegynder
26. maj 2005 - 16:47 #2
hovsa (manglede et "c"): if (feltnavn.checked)

/theSurfer
Avatar billede thesurfer Nybegynder
26. maj 2005 - 16:48 #3
PS: Det er det samme, for checkboxe..

/theSurfer
Avatar billede goose Nybegynder
26. maj 2005 - 17:12 #4
Har nu prøvet med:

if(tjek.f01.checked == true) {
alert('Du skal vælge en gruppe');
tjek.f01.focus();
return false;
}

- og det virker ikke, det tager ikke højde for om der er valgt en radioknap eller ej.

/Goose
Avatar billede thesurfer Nybegynder
26. maj 2005 - 17:24 #5
Dvs, du vil bruge 1 funktion, til at validere hele formen?

/theSurfer
Avatar billede thesurfer Nybegynder
26. maj 2005 - 17:25 #6
Hvordan ser din form ud? Indsæt koden her..

/theSurfer
Avatar billede goose Nybegynder
26. maj 2005 - 17:26 #7
Hvis jeg forstår dig korrekt, så ja.

Jeg har en hel masse felter af forskellig art (tekstfelter, radioknapper m.v.) som jeg skal have valideret, men hvad skulle det betyde ?

/Goose
Avatar billede goose Nybegynder
26. maj 2005 - 17:27 #8
Jeg vil ikke indsætte min kode her, den er meeeeget lang.

Jeg kan godt få mine øvrige felter til at tage imod valideringen, det er kun de radioknapper den inorerer.

/Goose
Avatar billede thesurfer Nybegynder
26. maj 2005 - 17:35 #9
Der er forskel på validering på textbox, radioknapper osv.. de har forskellige egenskaber..

Så må du bare lave et check:

if (feltnavn.type == "radio") {
  // det er en radioknap
  if (feltnavn.checked) {
    // radioknappen er markeret
  } else {
    // radiokanppen er IKKE markeret
  }
} else {
  // det er IKKE en radioknap
}

Normalt bruger man ikke direkte navn på objekter.. man laver en loop.. og så er det godt at bruge denne metode..

Men loops bruger man kun, hvis man har mange elementer i formen.

Hvis du har mulighed for det, skriv lige et link til siden, så vi kan test/finde løsninger..

/theSurfer
Avatar billede goose Nybegynder
26. maj 2005 - 17:43 #10
Nej, jeg har ikke noget link, men jeg har lige snippet lidt kode:

<FORM NAME="oplysning" action="resultat.asp" method="post" onSubmit="return tjek_form_oplysning();">

...

<td width="20"><INPUT TYPE="radio" VALUE="Ja" NAME="f01"></td>
<td width="40"><INPUT TYPE="radio" VALUE="Nej" NAME="f01"></td>

...

- og så den kode jeg startede med at poste

Jeg er ikke interesseret i at loope idet ikke alle felter skal valideres, ligesom jeg gerne vil kunne "smide" brugeren tilbage til et felt som "fejler".

/Goose
Avatar billede thesurfer Nybegynder
26. maj 2005 - 17:50 #11
Dvs, du vil faktisk skrive IF-sætninger til textboxe, og IF-sætninger til radioknapper?

Koden kan forkortes lidt, ved at tilføje "this" i din onsubmiit-kode:

<FORM NAME="oplysning" action="resultat.asp" method="post" onSubmit="return tjek_form_oplysning(this);">


<script type="text/JavaScript">

// nu kan vi henvise til formen, ved at bruge "f" (eller andet, hvis man ønsker det):

funcion tjek_form_oplysning(f)
{
if (!f.f01.checked) {
  // brugeren hverken valgt "ja" eller "nej", og sendes derfor tilbage:
  alert("Du skal vælge ja eller nej");
  return false;
}

return true; // mener faktisk at man skal have "true" med, for at det er korrekt kode..
}


Når man putter "!" foran, betyder det "false".. dvs, linien svarer til:

if (f.f01.checked == false)

/theSurfer
Avatar billede goose Nybegynder
26. maj 2005 - 18:09 #12
Okay, men jeg vil være rimelig ked af, at lave hele min validering om.

Hvis jeg nu sætter ! foran min oprindelige validering, så fortæller den mig godt nok, at der ikke er valgt noget, men den submitter alligevel når jeg trykker "OK":

if(!tjek.f01.checked) {
alert('Spørgsmål nr. 1 er ikke besvaret');
tjek.f01.focus();
return false;
}

Kan det ikke løses uden at skulle ændre hele min kode ?

/Goose
Avatar billede thesurfer Nybegynder
26. maj 2005 - 18:26 #13
Hele din kode? Mener du de der 3-5 linier..? :-)
Avatar billede thesurfer Nybegynder
26. maj 2005 - 18:34 #14
Det her virker fint:

<script type="text/JavaScript">
function tjek(f)
{
if (!f.testradio[0].checked && !f.testradio[1].checked) {
  alert("Du skal vælge enten Ja eller Nej");
    return false;
}

if (f.testtext.value == "") {
  alert("Du skal skrive noget");
    f.testtext.focus();
    return false;
}

return true;

}
</script>

<form onsubmit="return tjek(this)">
<input type="radio" name="testradio" value="ja">Ja
<br>
<input type="radio" name="testradio" value="nej">Nej
<br>
<input type="textbox" name="testtext">(tekstfelt)
<br>
<input type="submit" value="Send">
</form>
Avatar billede thesurfer Nybegynder
26. maj 2005 - 18:36 #15
Hvis du undrer dig over, at der står [0] og [1], så er det fordi radioknapper er arrays (der står samme navn: name="DetSammeBeggeSteder").. og det skal det også være..

/theSurfer
Avatar billede goose Nybegynder
26. maj 2005 - 18:49 #16
Jeg finder på noget.
Nu er det mere end 3-5 linier der skal rettes, der er over 500 felter i formularen :o)

Smid et svar

/Goose
Avatar billede thesurfer Nybegynder
26. maj 2005 - 18:52 #17
Svar smidt :-)

Jeg lavede engang et script, hvor man kunne skrive hvilke felter der skulle valideres.. eller hvilke felter der *ikke* skulle valideres.. husker det ikke lige.. :-)

Men det blev gjort via en array, og en loop.. så sparer man en masse kode..

/theSurfer
Avatar billede goose Nybegynder
26. maj 2005 - 19:02 #18
Det er simpelthen utroligt, nu har jeg cut & pastet det eksempel du skriver skulle virke og det gør det bare ikke, den submitter uanset hvad ! :o(

/Goose
Avatar billede goose Nybegynder
26. maj 2005 - 19:04 #19
Tegnet ';' var ventet ??

/Goose
Avatar billede thesurfer Nybegynder
26. maj 2005 - 19:05 #20
Så mangler du et ";" tegn, et eller andet sted, i din kode :-)  (ikke min kode)
Avatar billede thesurfer Nybegynder
26. maj 2005 - 19:09 #21
Jeg har lige testet koden (fra 26/05-2005 18:34:48).. koden virker både i Internet Explorer og Opera..

Kig på linien, lige før den linie, med fejlen.. der skulle gerne være noget galt der..

/theSurfer
Avatar billede goose Nybegynder
26. maj 2005 - 19:16 #22
Ja den havde jeg ligesom selv regnet ud, men hvor ?
Jeg skrotter sg* det hele og starter forfra.

Jeg kan iøvrigt ikke helt se hvor det er den mangler ud fra det du har skrevet:

<script language="javascript">
funcion tjek_form_oplysning(v)
{
if (!v.f01[0].checked && !v.f01[1].checked) {
  alert("Du skal vælge enten Ja eller Nej");
    return false;
}
if (v.navn.value == "") {
  alert("Du skal skrive noget");
    v.navn.focus();
    return false;
}
return true;
}
</SCRIPT>

/Goose
Avatar billede thesurfer Nybegynder
26. maj 2005 - 19:32 #23
Du mangler et "t" i function: funcion tjek_form_oplysning(v)

Den tror jo, at "funcion" (uden "t") er en funktion, som den skal kalde på :-)

/theSurfer
Avatar billede thesurfer Nybegynder
26. maj 2005 - 19:33 #24
Forresten.. Så hedder det <script type="text/JavaScript"> nu.. :-)

/theSurfer
Avatar billede thesurfer Nybegynder
26. maj 2005 - 19:34 #25
..og, takker for points :-)

/theSurfer
Avatar billede goose Nybegynder
26. maj 2005 - 19:40 #26
Ja det har du ret i, der manglede et t og nu får jeg også alerten, men den submitter sg* alligevel :o(

/Goose
Avatar billede thesurfer Nybegynder
26. maj 2005 - 19:44 #27
woot?.. forstår jeg ikke lige..

Prøv at rydde cachen, og genstarte computeren.. kan være at det bliver fixet..

Ellers må du smide siden op et eller andet sted, så vi kan kigge på den..

/theSurfer
Avatar billede goose Nybegynder
27. maj 2005 - 11:55 #28
Okay, så lykkedes det vist.
Problemet/fejlen var, at der på samme side var en anden formular som gik ind og konfliktede med den nye.

/Goose
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester