Avatar billede Wideking Nybegynder
21. februar 2011 - 19:04 Der er 8 kommentarer

validere om en tjekboks er udfyldt

Hej Eksperter

Jeg har nu kæmpet et stykke tid med at skulle få en mailform til at validere om en tjekboks er udfyldt, men har efter mange timers kamp opgivet, så jeg håber her er hjælp at hente

Der er lavet en del indlæg om lignende, men jeg kan bare omsætte disse til en funktion på min side der virker

Jeg har styr på formularen så den tjekker diverse felter der skal udfyldes, men jeg kan bare ikke få den til at tjekke tjekboksen:

Det er denne her jeg skal have lavet tjek på
<input type="checkbox" name="check" value=""> Har læst salg og leje betingelser

Min samlede kode til formularen er som følger
"Med tjekbox, men uden kode til tjek på boksen"

Den flinke ekspert hjælper med koden, og gerne en anvisning hvor i min samlede kode tjekket på tekstboksen skal indsættes

tjekket skulle gerne give en besked hvis den ikke er valgt når der trykkes på send knappen, og derefter bringer brugeren retur til formularen uden denne skal udfylde hele møllen en gang mere :-)

min kode til mailformularen

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ (...)
<html xmlns="http://www.w3.org/ (...)
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>RPM Racing Online - Bestilling</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<LINK REL=stylesheet HREF="stylesheet.css" TYPE="text/css">
<script type="text/javascript" src="js/flashobject.js"></script>
<script type="text/javascript" src="js/dropdown.js"></script>
<script type="text/javascript">


function validato_required(field,alerttxt)
{
with (field)
{
if (value==null||value=="")
  {alert(alerttxt);return false}
else {return true}
}
}

function validato_email(field,alerttxt)
{
with (field)
{
apos=value.indexOf("@")
dotpos=value.lastIndexOf(".")
if (apos<1||dotpos-apos<2)
  {alert(alerttxt);return false}
else {return true}
}
}



function VerifyData(f) {
  check=new Array;
  for (k=0;k<f.elements.length;k++) {
    if (f.elements[k].type=="radio") {
      if (f.elements[k].checked) {
      check[f.elements[k].name]=1;
    } else if (check[f.elements[k].name]!=1)
      check[f.elements[k].name]=2;
    }
  }
  alle="";
  for (a in check) {
    if (check[a]==2) {
      alle=alle+a+" ";
    }
  } 
  if (alle!="") {
  alert("Du mangler at afkrydse "+alle);
  return false;
  }
  return true;
}


function validato_field(field, value)
{
  felt=field.value;
  if ( ( felt.length == value)  && (parseInt( felt ) == felt ))
  {
    return true;
  }
  else
  {
    alert(field.name + " skal vre et tal og skal vre " + value + " karakterer langt!");
    return false;
  }
}

function validato_form(thisform)
{
with (thisform)
{
 


if(validato_required(navn,"Navn skal udfyldes!")==false)
  {navn.focus();return false}
  else if(validato_required(mail,"Mail skal udfyldes!")==false)
  {mail.focus();return false}

 
else if (validato_email(mail,"Indtast en gyldig mailadresse!")==false)
  {mail.focus();return false}


else if(validato_required(telefon,"Telefon skal udfyldes!")==false)
  {telefon.focus();return false}


else if(validato_required(adresse,"Adresse skal udfyldes!")==false)
  {adresse.focus();return false}
 
else if(validato_required(prnavn,"Produkt navn skal udfyldes!")==false)
  {prnavn.focus();return false}
  else if(validato_required(id,"Vare id skal udfyldes!")==false)
  {id.focus();return false}

  else{
  return true}
  }
}
</script>

</head>

<body>



<div id="center">

<div id="logo">
<a href="index.php"><img src="images/logo.jpg" alt="logo"></a>
</div>

<div id="menu" class="menu">
<?php
include("menu.php");
?>
</div>

<div id="top"></div>

<div id="textbox">
<span class="h1">Online bestilling</span><br />
Efter bestilling vil du modtage en ordrebekræftigelse via mail.
I mailen er også angivet beløb og konto-nummer og der skal indbetales inden 2 dage efter ordrebekræftigelse er modtaget.
Sker dette ikke,  vil din bestilling blive slettet. <br />
Er din betaling ikke registreret 2 dage efter ordrebekræftigelsen er modtaget, vil vi din bestilling blive annuleret
Dog vil vi tillade os at forsøge at kontakte dig telefonisk inden
<br />

<?php
include("database.php");

$_GET[id] = addslashes($_GET[id]);

// Spørger på data

$navnequery = mysql_query("SELECT * FROM _salg_leje WHERE id = '".$_GET[id]."'") or die(mysql_error());

$navnedata = mysql_fetch_array($navnequery)
?>



<form action="_Mail_bestil.php" onsubmit="return validato_form(this)" method="post">
<table>
<tr>
<td>

Id:<br><textarea cols="7" rows="1" readonly="readonly" name="id"><?php echo $navnedata[id]; ?></textarea><br> <br>
</td>
<td>
<br>Produkt:<br>
<textarea cols="22" rows="2" readonly="readonly" name="prnavn"><?php echo $navnedata[prnavn]; ?></textarea><br> <br>
</td>
<td>
<br>Pris:<br>
<textarea cols="12" rows="2" readonly="readonly" name="pris"><?php echo $navnedata[pris]; ?></textarea><br> <br>
</td>
<td>

<br>Bem:<br>
<textarea cols="27" rows="2" readonly="readonly" name="bm_pris"><?php echo $navnedata[bm_pris]; ?></textarea><br> <br>
</td>
</tr>
<tr>
<td>



Købe-Leje:<br>
<select size="1" cols="10" name="kobleje">
    <option>Købe</option>
    <option selected="selected"> Leje</option>
   
</select>
<td>
Afhentes:<br>
<select size="1" cols="10" name="levering">
    <option>Sendes</option>
    <option selected="selected">Afhentes</option>

</select>

<tr>


<td>
<br>Dit navn:<br>
<input type=text name=navn><br><br>
</td>

<td>
<br>Din mailadresse:<br>
<input type=text name=mail><br><br>
</td>
   

<td>
<br>Telefon:<br>
<input type=text name=telefon><br><br>
</td>
<tr>

<td colspan="3">
Din postadresse:<br>
<textarea name="adresse" cols="32" rows="2"></textarea><br>


<colspan="3">
Kommentar:<br>
<textarea name="kommentarer" cols="32" rows="2"></textarea>
<input type="checkbox" name="check" value=""> Har læst betingelser
<input type="hidden" name="id" value="<?=$_GET[id]?>">
<input type="submit" value="Bestil">
</tr>
</td>
</table>
</form>
</td>
</tr>
</table>

</div>

<!--
<div id="picbox" style="top:460px; left:340px">
<img src="images/bike1.jpg" />
</div>
-->

</div>

</body>
</html>
Avatar billede claes57 Ekspert
21. februar 2011 - 19:53 #1
her er en demo, du kan se på
<input type="checkbox" name="check" value="" onclick="if (this.checked) alert('ja');else alert('nej');"> Har læst betingelser

så svaret ligger i .checked
Avatar billede Wideking Nybegynder
22. februar 2011 - 20:41 #2
Som den er nu (med din demo) sender formularen fortsat mailen hvis der ikke gøres et aktivt valg på tjekboksen boksen (lader den stå tom som)

tjekker jeg boksen siger den ja i en meddelsesboks og fjerner jeg tjek er der en meddelse nej

Det er for så vidt fint, men hvordan får jeg min formular til at give besked hvis tjekboksen ikke er udfyldt og tvinge brugeren til at makere de har læst betingelserne før formularen kan sendes ?

Se evt hvad jeg mener her ved at vælge at bestille en af de listede produkter, og prøv at udfylde mail skabelonen
http://rpm-racing.dk/salg_leje.php
Avatar billede claes57 Ekspert
23. februar 2011 - 10:58 #3
du kommer aldrig til
function VerifyData(f)
som skal kaldes fra
function validato_form(thisform) nede i if/else rutinen
for at tjekke om der er afkrydset.
Avatar billede Wideking Nybegynder
23. februar 2011 - 19:29 #4
hej igen
Jeg har nu laver denne if/else rutine. den virker fint, den kigger bare ikke på om tjekboxen er valgt eller ikke

else if(validato_required(check,"Husk at læse salgs og lejebetingelser!")==false)
  {check.focus();return false}


Hvordan skal jeg få den til kun at virke når boksen ikke er tjekket ?

Jeg er newbe og mangler stadig at forstå en del rutiner
Tænker det  validato_required der skal hedde noger andet ?
Avatar billede claes57 Ekspert
23. februar 2011 - 20:00 #5
jeg synes, at have skrevet, at du skulle kalde VerifyData
hvorfor skriver du så validato_required(...)

test lige
else if(VerifyData(check)==false)
  {check.focus();return false}
Avatar billede Wideking Nybegynder
23. februar 2011 - 20:33 #6
tænker det er her et sted i denne kode jeg skal have den puslet ind ?

Jeg kan ikke gennemskue om dette er noget gammel kode fra ham det tidligere har arbejdet på siden, eller hvad dette stykke kode gør 




function VerifyData(f) {
  check=new Array;
  for (k=0;k<f.elements.length;k++) {
    if (f.elements[k].type=="radio") {
      if (f.elements[k].checked) {
      check[f.elements[k].name]=1;
    } else if (check[f.elements[k].name]!=1)
      check[f.elements[k].name]=2;
    }
  }
  alle="";
  for (a in check) {
    if (check[a]==2) {
      alle=alle+a+" ";
    }
  } 
  if (alle!="") {
  alert("Du mangler at afkrydse "+alle);
  return false;
  }
  return true;
}
Avatar billede claes57 Ekspert
23. februar 2011 - 20:48 #7
det er rutinen, der skal kaldes - men du kalder jo stadig kun validato_form fra
<form action="_Mail_bestil.php" onsubmit="return validato_form(this)" method="post">
så det skal ind i den. Herunder er en utestet version:

function validato_form(thisform)
{
with (thisform)
{



if(validato_required(navn,"Navn skal udfyldes!")==false)
  {navn.focus();return false}
  else if(validato_required(mail,"Mail skal udfyldes!")==false)
  {mail.focus();return false}


else if (validato_email(mail,"Indtast en gyldig mailadresse!")==false)
  {mail.focus();return false}


else if(validato_required(telefon,"Telefon skal udfyldes!")==false)
  {telefon.focus();return false}


else if(validato_required(adresse,"Adresse skal udfyldes!")==false)
  {adresse.focus();return false}

else if(VerifyData(check)==false)
  {check.focus();return false}

else if(validato_required(prnavn,"Produkt navn skal udfyldes!")==false)
  {prnavn.focus();return false}
  else if(validato_required(id,"Vare id skal udfyldes!")==false)
  {id.focus();return false}

  else{
  return true}
  }
}
Avatar billede Wideking Nybegynder
06. marts 2011 - 08:22 #8
Jeg virker måske lidt tungnem, men jeg forstår det stadig ikke :-)


Min kode er nu sådan:

function validato_required(field,alerttxt)
{
with (field)
{
if (value==null||value=="")
  {alert(alerttxt);return false}
else {return true}
}
}

function validato_email(field,alerttxt)
{
with (field)
{
apos=value.indexOf("@")
dotpos=value.lastIndexOf(".")
if (apos<1||dotpos-apos<2)
  {alert(alerttxt);return false}
else {return true}
}
}



function VerifyData(f) {
  else if(VerifyData(check)==false)
  {check.focus();return false}
  }
  return true;
}


function validato_field(field, value)
{
  felt=field.value;
  if ( ( felt.length == value)  && (parseInt( felt ) == felt ))
  {
    return true;
  }
  else
  {
    alert(field.name + " skal vre et tal og skal vre " + value + " karakterer langt!");
    return false;
  }
}

function validato_form(thisform)
{
with (thisform)
{


if(validato_required(navn,"Navn skal udfyldes!")==false)
  {navn.focus();return false}
  else if(validato_required(mail,"Mail skal udfyldes!")==false)
  {mail.focus();return false}


else if (validato_email(mail,"Indtast en gyldig mailadresse!")==false)
  {mail.focus();return false}


else if(validato_required(telefon,"Telefon skal udfyldes!")==false)
  {telefon.focus();return false}


else if(validato_required(adresse,"Adresse skal udfyldes!")==false)
  {adresse.focus();return false}

else if(VerifyData(check)==false)
  {check.focus();return false}

else if(validato_required(prnavn,"Produkt navn skal udfyldes!")==false)
  {prnavn.focus();return false}
  else if(validato_required(id,"Vare id skal udfyldes!")==false)
  {id.focus();return false}

  else{
  return true}
  }
}
</script>
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
Alle kurser indenfor Microsoft 365 – både til begyndere og øvede.

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