Avatar billede quarkb Nybegynder
20. maj 2010 - 20:22 Der er 9 kommentarer og
1 løsning

løk i javascript

Jeg skal validere på en del radio knapper hvordan gør jeg det uden at skulle lave nedenstående for hver radio knap gruppe.

<script type="text/javascript">

function validering()
  {
  error = 0;
  if(!((document.forms[0].R1[0].checked) 
    || (document.forms[0].R1[1].checked)
    || (document.forms[0].R1[2].checked) && (error==0)))
  {       
    alert('Alle Ja/Nej/Ej punkter skal udfyldes!');
    error = 1;       
  }
 
  if(!((document.forms[0].R2[0].checked)
    || (document.forms[0].R2[1].checked)
    || (document.forms[0].R2[2].checked) && (error==0)))
  {       
    alert('Alle Ja/Nej/Ej punkter skal udfyldes!');
    error = 1;       
  }   

  if(error == 0)
  document.forms[0].submit();   
  }

</script>

Radio grupperne hedder alle R(nummer).
Avatar billede showsource Seniormester
20. maj 2010 - 21:23 #1
Ved ikke, men dette har jeg engang brugt til checkboxe

function my_box(formnavn,feltnavn,conf){

var navn = document.forms[formnavn];
var ch = navn.elements[feltnavn];
var antal = ch.length;

  if(antal == undefined) {

    if(ch.checked) {
    return do_conf(conf);
    }

  }else{

    for(i=0;antal>i;i++){
      if(ch[i].checked) {
      return do_conf(conf);
      }
    }

  }

alert('Marker mindst en checkbox for at submitte!');
return false;

}


do_conf() submitter formen.
Avatar billede jokkejensen Novice
20. maj 2010 - 22:21 #2
Sådan her ville jeg tage dem med jQuery

    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>

    <script type="text/javascript">
        $(document).ready(function() {

            $("form").submit(function() {
                var i = 1; //start
                var y = 2; //slut
                var errors = 0; // antal tomme radiobuttons grupper.

                for (i; i <= y; i++) {
                    if ($("input:not(:checked)[name=R" + i + "]").length != $("input[name=R" + i + "]").length)
                        errors++;
                }

                if (errors > 0) {
                    alert("felterne skal udfyldes");
                    return false;
                } else
                    return true;

            });
        });
    </script>

Erstat lige ("form") med ex ("#IdpåForm"), og start og slut, ovenstående søger gennem R1 og R2.


/J
Avatar billede quarkb Nybegynder
20. maj 2010 - 22:37 #3
hmm..
Er ikke ret god til java, så hjælp mig lige helt i mål.

    <script type="text/javascript">
        $(document).ready(function() {

            $("opret").submit(function() {
                var i = 1; //start
                var y = 2; //slut
                var errors = 0; // antal tomme radiobuttons grupper.

                for (i; i <= y; i++) {
                    if ($("input:not(:checked)[name=R" + i + "]").length != $("input[name=R" + i + "]").length)
                        errors++;
                }

                if (errors > 0) {
                    alert("felterne skal udfyldes");
                    return false;
                } else
                    return true;

            });
        });
    </script>

opret er navnet på min form også id på formen.

Formen er sådan ud:
<form id="opret" name="opret" action="?target=opret" method="post" enctype="multipart/form-data" onsubmit="validering();return false;">
Avatar billede jens426 Nybegynder
21. maj 2010 - 19:51 #4
<script type="text/javascript">

function validering()
  {
  error = 0;
  if(!((document.forms[0].R1[0].checked) 
    || (document.forms[0].R1[1].checked)
    || (document.forms[0].R1[2].checked) && (error==0)))
  {       
    alert('Alle Ja/Nej/Ej punkter skal udfyldes!');
    error = 1;       
  }
 
  if(!((document.forms[0].R2[0].checked)
    || (document.forms[0].R2[1].checked)
    || (document.forms[0].R2[2].checked) && (error==0)))
  {       
    alert('Alle Ja/Nej/Ej punkter skal udfyldes!');
    error = 1;       
  }   

  if(error == 0)
  window.location='http://www.youpage.com/?target=opret';   
  }

</script>


<FORM>
<INPUT type="button" value="Go to my other Page!" name="button6" onClick="validering();return false;">
</FORM>


ændre
window.location='http://www.youpage.com/?target=opret';
til din adresse, hvis det ikke virker, post hele hmtl filen så kigger jeg på det.
Avatar billede quarkb Nybegynder
21. maj 2010 - 20:17 #5
jens426, jeg har ca. 30 radio grupper, jeg vil gerne at jeg ikke skal lave
if(!((document.forms[0].R2[0].checked)
    || (document.forms[0].R2[1].checked)
    || (document.forms[0].R2[2].checked) && (error==0)))
  {       
    alert('Alle Ja/Nej/Ej punkter skal udfyldes!');
    error = 1;       
  } 
for alle 30 grupper, det er mere jokkejensens løsning som ser bedste ud, jeg kan bare ikke få det til at virke.
Avatar billede tjens Nybegynder
21. maj 2010 - 22:41 #6
function validering(n)
{
  for (var i=1; i<=n; i++) {
    if( !( eval("document.forms[0].R" + i + "[0].checked") 
        || eval("document.forms[0].R" + i + "[1].checked")
        || eval("document.forms[0].R" + i + "[2].checked") ) )
    {       
      alert('Alle Ja/Nej/Ej punkter skal udfyldes!');
      eval("document.forms[0].R" + i + "[0].focus()")
      return false;       
    }
  }
  alert("Hurra: Alt er valideret");
  return true;
}

Kaldes med en parameter, som er lig med antal "R"-grupper
Avatar billede quarkb Nybegynder
21. maj 2010 - 22:59 #7
Den sad sgu lige i skabet tjens.....

Hvordan kæder jeg den sammen med:


  {
  error = 0;
  if((document.forms[0].KundeNavn.value=='') && (error==0)) 
  {       
    alert('Navn skal udfyldes!');
    document.forms[0].KundeNavn.focus();
    error = 1;       
  }
  if((document.forms[0].Levering.value=='') && (error==0)) 
  {       
    alert('Arbejdsadresse skal udfyldes!');
    document.forms[0].Levering.focus();
    error = 1;       
  }

  if((document.forms[0].Projekt.value=='') && (error==0)) 
  {       
    alert('Projekt/Ordre skal udfyldes!');
    document.forms[0].Projekt.focus();
    error = 1;       
  }

  if((document.forms[0].DatoSlutKontrol.value=='') && (error==0)) 
  {       
    alert('Dato for slutkontrol skal udfyldes!');
    document.forms[0].DatoSlutKontrol.focus();
    error = 1;       
  }
 
  if((document.forms[0].UdfoertAf.value=='') && (error==0)) 
  {       
    alert('Udført af skal udfyldes!');
    document.forms[0].UdfoertAf.focus();
    error = 1;       
  }

  if(error == 0)
  document.forms[0].submit();   
  }
Avatar billede quarkb Nybegynder
21. maj 2010 - 23:13 #8
Sådan her:
<script type="text/javascript">
function validering(n)
{
  if(document.forms[0].KundeNavn.value=='')
  { alert('Feltet Navn skal udfyldes');
  return false;
  }

  for (var i=1; i<=n; i++) {
    if( !( eval("document.forms[0].R" + i + "[0].checked") 
        || eval("document.forms[0].R" + i + "[1].checked")
        || eval("document.forms[0].R" + i + "[2].checked") ) )
    {       
      alert('Alle Ja/Nej/Ej punkter skal udfyldes!');
      eval("document.forms[0].R" + i + "[0].focus()")
      return false;       
    }
  }
    document.forms[0].submit();
}
</script>

Lav et svar tjens, og du får de 100 point.
Avatar billede tjens Nybegynder
21. maj 2010 - 23:25 #9
Svar
Avatar billede quarkb Nybegynder
21. maj 2010 - 23:31 #10
Igen mange tak for jeres hjælp, ikke mindst til tjens.

:o)
QuarkB
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