Avatar billede Samson91 Nybegynder
07. december 2011 - 15:17 Der er 13 kommentarer og
1 løsning

Valider radiobutton

Hej Eksperter
Jeg har dette script som virker fint, det validerer på de første radiobuttons. Hvad jeg til gengæld ikke kan finde ud af er at få scriptet til at "validere" således at hvis Typ0 og Typ1 er valgt SKAL en af radiobuttons "slags" også udfyldes. Håber det er til at forstå. På forhånd tak.
Samson

<script
type="text/javascript">


  function validate(frm) {
// valider radiobutton
    if (!frm. Typ[0].checked&&!frm.Typ[1].checked){
    if (!frm.Typ[1].checked&&!frm.Typ[2].checked){
    if (!frm.Typ[2].checked&&!frm.Typ[3].checked){
    if (!frm.Typ[3].checked&&!frm.Typ[4].checked){
      alert('Husk at udfylde feltet: Type');
      frm.Typ[0].focus(); // sætter fokus på felt m fejl
      return false
    }
}
}
}

    return true ;
}


</script>

<form METHOD="POST" action="fil.asp" onSubmit="return(validate(this))">

<table border="0" width="100%" style>
  <tr>
    <td width="600"></td>
  </tr>
  <tr>
    <td id="TypeHeader"><b>Type </b></td>
  </tr>
  <tr id="GrTypSelect">
    <td><table style="width:100%" width="940">
      <tr>
        <td style width="936"><input type="radio" name="Typ"
        value="Test1" id="Typ" onclick="GrType(this.value);"> <label
        for="Grtyp0">Test1</label> <input type="radio" name="GravTyp"
        value="Test2" id="Typ" onclick="GrType(this.value);"> <label
        for="GrTyp1">Test2</label> <input type="radio" name="Typ"
        value="Test3" id="Typ" onclick="GrType(this.value);"> <label
        for="GrTyp2">Test3</label> <input type="radio" name="Typ"
        value="Test4" id="Typ" onclick="GrType(this.value);"> <label
        for="GrTyp3">Test4</label> <input type="radio" name="Typ"
        value="Test5" id="Typ" onclick="GrType(this.value);"> <label
        for="GrTyp4">Test5</label> </td>
      </tr>
    </table>
<p><input type="radio" value="1" checked name="slags"><input
      type="radio" name="slags" value="2"><input type="radio" name="slags" value="3"><input
      type="radio" name="slags" value="4"><input type="radio" name="slags" value="5"></p>

</form>
Avatar billede olebole Juniormester
07. december 2011 - 16:50 #1
<ole>

Begynd med at gøre din JS-kode læselig - og spørg så igen.

Hint: Brug fornuftig indrykning!

/mvh
</bole>
Avatar billede claes57 Ekspert
07. december 2011 - 17:41 #2
jeg tror ikke at tabellerne ved, hvilken bredde de skal være i
<table border="0" width="100%" style>
  <tr>
    <td width="600"></td>
  </tr>
  <tr>
    <td id="TypeHeader"><b>Type </b></td>
  </tr>
  <tr id="GrTypSelect">
    <td><table style="width:100%" width="940">
      <tr>
        <td style width="936">
reelt kunne det bare være
<table border="0">
  <tr>
    <td>&nbsp;</td>
  </tr>
  <tr>
    <td id="TypeHeader"><b>Type </b></td>
  </tr>
  <tr id="GrTypSelect">
    <td><table>
      <tr>
        <td width="936">
Avatar billede olebole Juniormester
07. december 2011 - 17:54 #3
JavaScript er rystende ligeglad med størrelsen på tabeller, men alle radios har samme id (id="typ"), hvilket ikke er valid kode. En ID skal være unik i dokumentet.

Hvad er i øvrigt begrundelsen for label elementerne? Så vidt jeg kan se, gør de intet  =)
Avatar billede claes57 Ekspert
07. december 2011 - 18:53 #4
mit var bare lidt oprydning - det er vildt forvirrende med så mange angivelser på en bredde.
Og olebole - du brokkede dig over indrykning - det er browser da også HELT ligeglad med.
Avatar billede olebole Juniormester
07. december 2011 - 19:21 #5
@claes57: Ja, fuldstændig! Men det er ikke en browser, der skal tilbage til denne kode om et halvt år og forsøge at finde ud af, hvad der sker i scriptet - eller overtage den til videreudvikling.

I professionelle sammenhænge er det fuldstændig utænkeligt at skrive dårlig indrykket kode. Det ville koste formuer i spildtid.

For amatøren betyder det ikke penge ud af vinduet, men oceaner af spildtid, hvor man kunne have skrevet masser af god kode, drukket god vin, spist god mad - eller dyrket rigtig god ... ehhhh .... stavgang med kæresten  =)
Avatar billede olebole Juniormester
07. december 2011 - 19:25 #6
PS: og grunden til, at jeg 'brokker' mig over den manglende indrykning, er, at jeg har lyst til at spilde tid med at sidde og fedte med at finde mening i en sjusket opstillet kode. Man bør - både for ens egen og for andres skyld - bruge den fornødne tid på at skrive koden overskueligt  *o)
Avatar billede claes57 Ekspert
07. december 2011 - 20:28 #7
#5+6 (=11?)
Thumbs up
Avatar billede Samson91 Nybegynder
08. december 2011 - 10:27 #8
Hej begge
Hold da op - længere diskussion der blev ud af dette:-) Grunden til koden måske var lidt forvirrende er at det er taget ud af en større sammenhæng og så slettede jeg det der ikke var relevant. Jeg prøver lige med et (håber jeg) meget enkelt eks. fordi jeg stadig er kørt helt fast i problemet. Det handler om at første gruppe radiobutton skal valideres for om en af dem er udfyldt, der SKAL være en udfyldt, hvis man vælger value="1" eller value="2" skal en af gruppe2 radiobuttons vælges, ellers ikke.
<html>

<head>
<title>Test radiobutton</title>
</head>

<body>

<table >
  <tr>
    <td><form METHOD="POST" action="bekref_test.asp">
      <table border="0">
        <tr>
          <td>Første gruppe radiobutton</td>
          <td><input type="radio" value="1" name="gruppe1"><input type="radio" name="gruppe1"
          value="2"><input type="radio" name="gruppe1" value="3"><input type="radio" name="gruppe1"
          value="4"><input type="radio" name="gruppe1" value="5"></td>
        </tr>
        <tr>
          <td>Anden gruppe radiobutton</td>
          <td><input type="radio" name="gruppe2" value="1"><input type="radio" name="gruppe2"
          value="2"><input type="radio" name="gruppe2" value="3"><input type="radio" name="gruppe2"
          value="4"></td>
        </tr>
        <tr>
          <td valign="top"><input TYPE="submit" VALUE="Send" name="Send"></td>
        </tr>
      </table>
    </form>
    </td>
  </tr>
</table>
</body>
</html>


Håber at indrykningen er ok, og en af jer stadig har mod på at hjælpe, hvis i kan en løsning.

MVH
Avatar billede olebole Juniormester
08. december 2011 - 21:11 #9
Scriptet:


<script type="text/javascript">
function validateForm(elmFrm) {
    var bChecked = false, bMustCheck2 = false;
    for (var i=0,j=elmFrm.gruppe1.length; i<j; i++) {
        if (elmFrm.gruppe1[i].checked) {
            bChecked = true;
            if (elmFrm.gruppe1[i].value<=2) {
                bMustCheck2 = true;
                break;
            }
        }
    }
    if (!bChecked) {
        alert("Mangler gruppe1");
        return false;
    }
    if (bMustCheck2) {
        for (var i=0,j=elmFrm.gruppe2.length; i<j; i++) {
            if (elmFrm.gruppe2[i].checked) return true;
        }
        alert("Mangler gruppe2");
        return false;
    }
    return true;
}
</script>


- og kaldet:


<form METHOD="POST" action="bekref_test.asp" onsubmit="return validateForm(this)">

Avatar billede Samson91 Nybegynder
09. december 2011 - 09:05 #10
Hej olebole
Virker præcis som jeg gerne ville have det til. Tusind tak for hjælpen:-)

MVH. Samson
Avatar billede Samson91 Nybegynder
09. december 2011 - 09:07 #11
Ups, kom til at sende svar i stedet, vil du ikke gøre det?
Avatar billede olebole Juniormester
09. december 2011 - 17:57 #12
Ellers tak, jeg samler ikke point. Spørg evt. andre i tråden eller læg et svar selv, som accepteres. Derved lukkes tråden  =)
Avatar billede Samson91 Nybegynder
11. december 2011 - 17:37 #13
Ok, men så igen tak for hjælpen
Avatar billede Samson91 Nybegynder
12. december 2011 - 13:19 #14
Hej olebole

Hvis du har tid har jeg brug for lidt mere hjælp og det så ud som om du har rimelig styr på det:-)
I dette script vil jeg gerne have valideret det således at hvis én af de 2 første radiobuttons er valgt skal én af de 4 dropdowns vælges, ellers ikke.

<html>

<head>
<title>Radiobutton - dropdown</title>
</head>

<body>

<table>
  <tr>
    <td><form METHOD="POST" action="be_test.asp" onsubmit="return validateForm(this)">
      <table border="0">
        <tr>
          <td>Radiobutton</td>
          <td><input type="radio" value="1" name="gruppe"><input type="radio" name="gruppe"
          value="2"><input type="radio" name="gruppe" value="3"><input type="radio" name="gruppe"
          value="4"><input type="radio" name="gruppe" value="5"></td>
        </tr>
        <tr>
          <td>Test1</td>
          <td><select name="Test1" size="1">
            <option value="Vælg...">Vælg...</option>
            <option value="A">A</option>
            <option value="B">B</option>
          </select></td>
        </tr>
        <tr>
          <td>Test2</td>
          <td><select name="Test2" size="1">
            <option value="Vælg...">Vælg...</option>
            <option value="C">C</option>
            <option value="D">D</option>
          </select></td>
        </tr>
        <tr>
          <td>Test3</td>
          <td><select name="Test3" size="1">
            <option value="Vælg..">Vælg..</option>
            <option value="E">E</option>
            <option value="F">F</option>
          </select></td>
        </tr>
        <tr>
          <td>Test4</td>
          <td><select name="Test4" size="1">
            <option value="Vælg..">Vælg..</option>
            <option value="G">G</option>
            <option value="H">H</option>
          </select></td>
        </tr>
        <tr>
          <td valign="top"><input TYPE="submit" VALUE="Send" name="Send"></td>
        </tr>
      </table>
    </form>
    </td>
  </tr>
</table>
</body>
</html>
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