Avatar billede karsten_larsen Praktikant
24. august 2005 - 15:22 Der er 5 kommentarer og
1 løsning

Automatisk flyt til næste radiogruppe ved bestemt taste

Jeg har en brugerside, hvor der skal foretages mange indtastninger i form af valg af radio.

radiogruppe 1 består af 5 knapper
radiogruppe 2 består af 5 knapper
etc.

Jeg er kommet så langt at den første radioknap er markeret, men at udfylde resten via tasttrykke fra 1 til 5 volder problemer, samtidg med at fokus skal flyttes til næste radiogruppe osv.

Så når Række 1 med første radio (name= var_1 value = 1) er markeret fra start og brugeren trykker på tallet 3 på tastaturet, så skal  den midterste radio i Række 1 markeres (name = var_1 value = 3) være valgt og næste tal brugeren trykker skal markeres i Række 2 osv osv.

Håber det er til at forstå!

??:-)karsten_larsen

Her følger min kode:
<HTML>
<HEAD>
<SCRIPT LANGUAGE="JavaScript">
<!--
    function marking(f,radio_name,radio_value) {
        for(i=0;i<f.elements.length;i++) {
              if(f.elements[i].type=="radio" && f.elements[i].name==radio_name && f.elements[i].value==radio_value)
                  f.elements[i].checked=true;
          }
    }
 
    function test() {
        marking(document.f,'var_1',"1");
    }

    function valider(f) {
    for (i = 0; i < f.elements.length; i++) {
      if (f.elements[i].type == "radio" && f.elements[i].value=="1") {
          document.f,"var_"[i].focus();
          return false;
        }
      if (f.elements[i].type == "radio" && f.elements[i].value=="2") {
          document.f,"var_"[i].focus();
          return false;
        }
      if (f.elements[i].type == "radio" && f.elements[i].value=="3") {
          document.f,"var_"[i].focus();
          return false;
        }
      if (f.elements[i].type == "radio" && f.elements[i].value=="4") {
          document.f,"var_"[i].focus();
          return false;
        }
      if (f.elements[i].type == "radio" && f.elements[i].value=="5") {
          document.f,"var_"[i].focus();
          return false;
        }                 
      }
      return true;
    }
//-->
</SCRIPT>
</HEAD>

<body onload="test()" onkeypress=valider()>

<form name="f" method="post" action="kode_radio.asp" >
Række 1<br>
<input name="var_1" type="radio" value="1">
<input name="var_1" type="radio" value="2">
<input name="var_1" type="radio" value="3">
<input name="var_1" type="radio" value="4">
<input name="var_1" type="radio" value="5">
<br>
<br>
Række 2<br>
<input name="var_2" type="radio" value="1">
<input name="var_2" type="radio" value="2">
<input name="var_2" type="radio" value="3">
<input name="var_2" type="radio" value="4">
<input name="var_2" type="radio" value="5">
<br>
<br>
Række 3<br>
<input name="var_3" type="radio" value="1">
<input name="var_3" type="radio" value="2">
<input name="var_3" type="radio" value="3">
<input name="var_3" type="radio" value="4">
<input name="var_3" type="radio" value="5">
<br>
<br>
Række 4 <br>
<input name="var_4" type="radio" value="1">
<input name="var_4" type="radio" value="2">
<input name="var_4" type="radio" value="3">
<input name="var_4" type="radio" value="4">
<input name="var_4" type="radio" value="5">
<br>
<br>
Række 5<br>
<input name="var_5" type="radio" value="1">
<input name="var_5" type="radio" value="2">
<input name="var_5" type="radio" value="3">
<input name="var_5" type="radio" value="4">
<input name="var_5" type="radio" value="5">
<br>
<input  name="Send" type="submit" value="Send">
</form>

</BODY>
</HTML>
Avatar billede roenving Novice
24. august 2005 - 16:43 #1
Tjah, nu ved jeg jo ikke hvordan du skal bruge sagen videre, men sådan virker den i alle mine browsere:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script type="text/javascript">
    var fld = 'var_1';
    function marking(f,radio_name,radio_value) {
        var e = f.elements[radio_name];
        for(i=0;e.length>i;i++) {
              if(e[i].value==radio_value)
                  e[i].checked=true;
          }
    }
    function marker(e){
      if(fld == 'var_6')
        return false;
      e = e?e:event;
      var tast = (e.which?e.which:e.keyCode)-48;
      if(tast>0 && 6>tast){
        marking(document.f,fld,tast);
        fld = 'var_' + (+fld.replace(/.*?(\d)/,"$1")+1);
        if(fld != 'var_6')
          document.f.elements[fld][0].focus();
        else
          document.f.Send.focus();
      }
    }
    window.onload = function(){
      document.f.elements[0].focus();
    }
    document.onkeypress = marker;
</script>
<title>Marker automatisk</title>
</head>

<body>

<form name="f" method="post" action="kode_radio.asp" >
Række 1<br>
<input name="var_1" type="radio" value="1">
<input name="var_1" type="radio" value="2">
<input name="var_1" type="radio" value="3">
<input name="var_1" type="radio" value="4">
<input name="var_1" type="radio" value="5">
<br>
<br>
Række 2<br>
<input name="var_2" type="radio" value="1">
<input name="var_2" type="radio" value="2">
<input name="var_2" type="radio" value="3">
<input name="var_2" type="radio" value="4">
<input name="var_2" type="radio" value="5">
<br>
<br>
Række 3<br>
<input name="var_3" type="radio" value="1">
<input name="var_3" type="radio" value="2">
<input name="var_3" type="radio" value="3">
<input name="var_3" type="radio" value="4">
<input name="var_3" type="radio" value="5">
<br>
<br>
Række 4 <br>
<input name="var_4" type="radio" value="1">
<input name="var_4" type="radio" value="2">
<input name="var_4" type="radio" value="3">
<input name="var_4" type="radio" value="4">
<input name="var_4" type="radio" value="5">
<br>
<br>
Række 5<br>
<input name="var_5" type="radio" value="1">
<input name="var_5" type="radio" value="2">
<input name="var_5" type="radio" value="3">
<input name="var_5" type="radio" value="4">
<input name="var_5" type="radio" value="5">
<br>
<input  name="Send" type="submit" value="Send">
</form>

</body>
</html>
Avatar billede karsten_larsen Praktikant
24. august 2005 - 18:46 #2
roenvig - det fungerer godt nok lækkert. Jeg poster det tilbage med satte "check" radiobutton for de svar som er afkrydset og markering for dem som mangler via et asp script (det var svar på dit spørgsmål). Vil det være muligt, at få scriptet til at starte der hvor der mangler radio markering. F.eks. hvis række 4 mangler så er fokus sat på række 4.

Vil det så være noget i denne retning:

    window.onload = function(){
        for(i=0;e.length>i;i++) {
              if(e[i].value==radio_value)
                  e[i].checked=true;
          }   
        document.f.elements[i].focus();

Eller hur?

Under alle omstændigheder mange tak for hjælpen - vil du lave et svar?

:-) karsten_larsen
Avatar billede roenving Novice
24. august 2005 - 22:43 #3
Næh, du skal nok lidt længere omkring, for den afkrydsede er jo evt. en, som har 4 bagefter, hrm, hrm ...
Avatar billede karsten_larsen Praktikant
28. august 2005 - 20:40 #4
roenvig - vil du ikke nok lave et svar. Har løst problemet i asp-script delen.

:-) karsten_larsen
Avatar billede roenving Novice
29. august 2005 - 01:01 #5
Oki '-)
Avatar billede roenving Novice
29. august 2005 - 10:42 #6
-- og tak for point ;~}
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