Avatar billede weiland Nybegynder
21. august 2003 - 14:04 Der er 7 kommentarer og
1 løsning

Validering af radioknapper og en checkbox

Jeg har en side med en enkelt checkbox og en mængde radioknapper (samme name, antallet varierer). På http://developer.apple.com/internet/javascript/validation.html har jeg fundet en stump kode, der angiveligt validerer radioknapperne, men jeg kan ikke lige greje hvordan den rent praktisk anvendes, og hvordan jeg kombinerer med valideringen af checkboksen.


for (i=0, n=theForm.radios.length; i<n; i++) {
  if (theForm.radios[i].checked) {
      var checkvalue = theForm.radios[i].value;
      break;
  }
}
why += checkRadio(checkvalue);

function checkRadio(checkvalue) {
var error = "";
  if (!(checkvalue)) {
      error = "Please check a radio button.\n";
    }
return error;   
}

Valideringen skal sikre, at enten er checkboksen eller en radioknap valgt.
Avatar billede mm12010 Nybegynder
21. august 2003 - 14:20 #1
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>390538</title>
<script type="text/javascript">
function tjeckForm(frm){
    if(frm.tjeck.checked){
        return true;
        }
    for(i=0; i<frm.radios.length; i++){
        if(frm.radios[i].checked){
            return true;
            }
        }
    alert("tjeck noget!")
    return false;
    }
</script>
</head>
<body>
<form name="formular" method="post" action="" onSubmit="return tjeckForm(this);">
  <input type="radio" name="radios" value="radiobutton">
  <input type="radio" name="radios" value="radiobutton">
  <input type="checkbox" name="tjeck" value="checkbox">
  <input type="submit" name="Submit" value="Submit">
</form>
</body>
</html>
Avatar billede weiland Nybegynder
21. august 2003 - 14:28 #2
Det ser godt, jeg tester lige....
Avatar billede weiland Nybegynder
21. august 2003 - 14:42 #3
Hvad jeg glemt at sige var, at jeg faktisk submitter formen med et javascript.. og så virker det ikke.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>390538</title>
<script type="text/javascript">

function submitform() {
document.MyForm.submit();
}

function tjeckForm(frm){
    if(frm.tjeck.checked){
        return true;
        }
    for(i=0; i<frm.radios.length; i++){
        if(frm.radios[i].checked){
            return true;
            }
        }
    alert("tjeck noget!")
    return false;
    }
</script>
</head>
<body>

<a href="java script:submitform();">Gem</a>

<form name="MyForm" method="post" action="" onSubmit="return tjeckForm(this);">
  <input type="radio" name="radios" value="radiobutton">
  <input type="radio" name="radios" value="radiobutton">
  <input type="checkbox" name="tjeck" value="checkbox">
</form>
</body>
</html>

Er der en nem løsning på det?
Avatar billede weiland Nybegynder
21. august 2003 - 14:46 #4
Umiddelbart har jeg fået det til at virke med:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>390538</title>
<script type="text/javascript">

function submitform() {
document.MyForm.submit();
}

function tjeckForm(MyForm){
    if(document.MyForm.tjeck.checked){
        return true;
        }
    for(i=0; i<document.MyForm.radios.length; i++){
        if(document.MyForm.radios[i].checked){
            return true;
            }
        }
    alert("tjeck noget!")
    return false;
    }
</script>
</head>
<body>

<a href="java script:submitform();" onClick="return tjeckForm(MyForm);return true;">Gem</a>

<form name="MyForm" method="post" action="">
  <input type="radio" name="radios" value="radiobutton">
  <input type="radio" name="radios" value="radiobutton">
  <input type="checkbox" name="tjeck" value="checkbox">
</form>
</body>
</html>

Er det den rigtige mådè?
Avatar billede roenving Novice
21. august 2003 - 15:19 #5
arh -- ikke så kønt, og det kan gøres nemmere:

<a href="#" onClick="if(tjeckForm(MyForm));submitform();return false;">Gem</a>

eller:

<a href="java script:submitform();">Gem</a>

og:

function submitform() {
f=document.MyForm;
if(tjeckForm(f))f.submit();
}

function tjeckForm(f){
    if(f.tjeck.checked){
        return true;
        }
    for(i=0; i<f.radios.length; i++){
        if(f.radios[i].checked){
            return true;
            }
        }
    alert("tjeck noget!")
    return false;
    }

-- du skal passe på, når du bruger variabler og elementer med samme navn, det kan _meget_ nemt give fejl ...

-- desuden er det fuldstændig overflødigt at bede dokumentet arbejde sig frem til form-objektet hver gang du skal bruge det ...

I dette tilfælde kunne analogien være:
Du tager din mobil og ringer til sekretæren og siger: 'Kan du ikke lige komme og række mig min mobil, for jeg skal slå et nummer op i telefonbogen på den' !-)
Avatar billede roenving Novice
21. august 2003 - 15:21 #6
-- og egentlig er dette en fejl, hvis din javascript-kode ellers er rigtig (som mit eksempel !-)

Sådan:
<a href="#" onClick="if(tjeckForm(document.MyForm));submitform();return false;">Gem</a>
Avatar billede weiland Nybegynder
21. august 2003 - 15:39 #7
Mange tak for gode råd. Nu faxer jeg i stedet til sekretæren, og beder hende række mig telefonbogen.. :-)
Avatar billede roenving Novice
21. august 2003 - 15:51 #8
-- så du kan slå hendes faxnummer op ;O)
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