Avatar billede mini-me Nybegynder
29. oktober 2005 - 23:15 Der er 16 kommentarer og
1 løsning

Hvordan finder jeg den valgte værdi?

Hej jeg har noget kode der ser sådan her ud:


<table cellpadding="2" cellspacing="2" align="center">
  <tr>
    <td>ads</td>
    <td><input type="radio" name="Module" Value="ads"></td>
    <td><select name=ads>
        <option value=33>asd</option>
        <option value=6>redigerdenher</option>
        <option value=5>Velkommen</option>
      </select></TD>
  </tr>
  <tr>
    <td>contactform</td>
    <td><input type="radio" name="Module" Value="contactform"></td>
    <td><select name=contactform>
        <option value=66>asd</option>
        <option value=65>dfsf</option>
        <option value=64>dfsf</option>
        <option value=52> ApS</option>
      </select></TD>
  </tr>
  <tr>
    <td>filesystem</td>
    <td>
  <tr>
    <td>gallery</td>
    <td><input type="radio" name="Module" Value="gallery"></td>
    <td><select name=gallery>
        <option value=11>test</option>
        <option value=12>test2</option>
      </select></TD>
  </tr>
  <tr>
    <td colspan="3" align="center"><input type="submit" name="OK" value="OK">
  </tr>
</table>

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

Når jeg så klikker på min submit knap, hvordan kan jeg via javascript finde ud af hvilket modul og hvilken option der er valgt??
Avatar billede nikolajdu Nybegynder
29. oktober 2005 - 23:36 #1
Sådan her?

    <script>
    function validate(){
        var modul;
        var option;
            for(i = 0; i < document.minForm.Module.length; i++){
                if( document.minForm.Module[i].checked == true ){
                    modul = document.minForm.Module[i].value;
                    option = document.minForm[modul].options[document.minForm[modul].selectedIndex].value
                   
                }
            }
            alert("modul = "+modul+ " & option = "+option);
        }
    </script>
</head>

<body>
<form name="minForm" id="minForm">
<table cellpadding="2" cellspacing="2" align="center">
  <tr>
    <td>ads</td>
    <td><input type="radio" name="Module" Value="ads"></td>
    <td><select name=ads>
        <option value="33">asd</option>
        <option value="6">redigerdenher</option>
        <option value="5">Velkommen</option>
      </select></TD>
  </tr>
  <tr>
    <td>contactform</td>
    <td><input type="radio" name="Module" Value="contactform"></td>
    <td><select name=contactform>
        <option value=66>asd</option>
        <option value=65>dfsf</option>
        <option value=64>dfsf</option>
        <option value=52> ApS</option>
      </select></TD>
  </tr>
  <tr>
    <td>filesystem</td>
    <td>
  <tr>
    <td>gallery</td>
    <td><input type="radio" name="Module" Value="gallery"></td>
    <td><select name=gallery>
        <option value=11>test</option>
        <option value=12>test2</option>
      </select></TD>
  </tr>
  <tr>
    <td colspan="3" align="center"><input type="submit" name="OK" value="OK" onclick="return validate()">
  </tr>
</table>
</form>
Avatar billede skovenborg Nybegynder
29. oktober 2005 - 23:37 #2
Hvis du putter din tabel ind i en form:
<form onsubmit="hvadErValgt(this);">
<table....
</table>
</form>

kan jeg give et lille eksempel på hvordan du får fat i de forskellige værdier:
<script type="text/javascript">
function hvadErValgt(frm) {
      var modul,option;
      for (var i = 0;i<frm.Module.length;i++) {
              if (frm.Module[i].checked) {
                  modul = frm.Module[i].value;
                  break;
              }
      }
      option = frm.elements[modul].value;
      alert(modul+"\n"+option);
}
</script>

Ved radio-knapperne bliver du nødt til at løbe dem igennem til du finder ud af hvad for en der er valgt. I selectboxene kan du nøjes med at skrive value (man kunne også have skrevet  option = frm.elements[modul].options[frm.elements[modul].selectedIndex].value;
hvor options er et array med de forskellige options og selectedIndex er hvad for et der er valgt.
Avatar billede mini-me Nybegynder
29. oktober 2005 - 23:41 #3
nikolajdu:

Det virker ikke, får ingen alerts...

det her fik jeg dog til at virke

function validate()
{
for (var i=0; i < document.minform.Module.length; i++)
  {
  if (document.minform.Module[i].checked)
    {
    var value1 = document.minform.Module[i].value;

  alert(value1)
  }
  }
Avatar billede mini-me Nybegynder
29. oktober 2005 - 23:44 #4
min fejl, det virker perfekt, skulle bare lige have form-navnet korrekt. smid et svar point er dine..
Avatar billede mini-me Nybegynder
29. oktober 2005 - 23:46 #5
Men er det muligt at få det til at virke uden en form? Bruger det i en modelessDialog...
Avatar billede nikolajdu Nybegynder
29. oktober 2005 - 23:53 #6
ligegyldigt hvor du bruger din form vil det aldrig være korrekt uden <form>

anyway så skal min submit selvfølgelig også lige smides op på <form name="minForm" id="minForm" onsubmit="return validate()">

du kan så med fordel gøre som skovenborg har vist da det er kortere.
Avatar billede mini-me Nybegynder
29. oktober 2005 - 23:53 #7
hvis jeg istedet bruger document.all vil det påvirke eks. firefox? kan jeg bruge getElementById?
Avatar billede nikolajdu Nybegynder
30. oktober 2005 - 00:17 #8
Hvorfor ændre noget der virker :)

Document.all virker måske men det er egenligt en IE attribut og hvorfor bekymre sig om Firefox når du bruger modelessDialog??
Avatar billede olebole Juniormester
30. oktober 2005 - 00:26 #9
<ole>

nikolajdu >> lige et par rettelser  :)

Der er intet i vejen for at bruge 'form'-elementer, uden de ligger i et form-element. Det er ganske valid kode ifølge W3C.

'document.all' er altid noget skidt at bruge - også i IE. Den er væsentligt langsommere end f.eks. 'document.getElementById' - da du skal bladre _alle_ sidens elementer igennem, for at finde det ønskede.

Du har ganske ret i, at scriptet ikke er realistisk udenfor IE - men det er ikke en god nok grund til at bruge 'document.all'  :)

/mvh
</bole>
Avatar billede nikolajdu Nybegynder
30. oktober 2005 - 04:04 #10
Well så blev jeg også banket på plads :p
Avatar billede olebole Juniormester
30. oktober 2005 - 06:46 #11
- venligt irettesat. Du - om nogen - ved, hvordan det _kunne_ have lydt  ;D

I øvrigt kan du uden tvivl finde (meget) gamle spørgsmål, hvor jeg selv fægter for, at inputs, textareas o.lign. ikke må befinde sig udenfor en form. Bær over med staklen, thi han er blevet klogere.

Undskyld, hvis du er en af de, jeg dengang klaskede på den anden kind - og i så fald tak, fordi du nu, som en forbildedlig kristen, vender den friske side til  *LooL*

- long time, no see ... hyggeligt gensyn  ;o)
Avatar billede nikolajdu Nybegynder
30. oktober 2005 - 12:39 #12
Ork manner jeg har for længst lært at vende den anden kind til når lejligheden byder sig og den indre spanker melder sig.
Avatar billede olebole Juniormester
31. oktober 2005 - 00:13 #13
- Jumpin' Jack MasoFlash  ;o)
Avatar billede mini-me Nybegynder
02. november 2005 - 10:50 #14
nikolajdu smid et svar :) Og OleBole tak for de meget informative kommentare ;-)
Avatar billede nikolajdu Nybegynder
02. november 2005 - 10:59 #15
Well vi kan vel alle dele - og informativ - det er Ole som altid det drejer sig så kun bare om 15% af indholdet ;-p

Heldigvis blev vi da kun ved kinden. *LOL*
Avatar billede olebole Juniormester
02. november 2005 - 11:24 #16
"kun 15% af indholdet" ... tsk-tsk! Det er da ikke mig, der skriver en halv Koran, to-tre evangelier og en Lukkelov med tillæg for at trykke mig ud ... og pas nu på, det ikke ender med at være mig, der trykker dig ud ... nå!  ;D

mini-me >> selvtak ... og undskyld, der gik lidt sludre-spam i den også  ;o)
Avatar billede mini-me Nybegynder
02. november 2005 - 11:44 #17
Hehe det nu godtnok, så det altsammen ikke så kedeligt :)
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