Avatar billede w13 Novice
23. december 2003 - 22:50 Der er 14 kommentarer og
1 løsning

Ikke blanke felter

-Jeg har lavet en formular som brugeren kan udfylde og derefter klikke på "indsend", hvorefter det indtastede bliver gemt i en database, men hvilken kode skal jeg bruge, hvis jeg ikke vil tillade bestemte af felterne at være blanke?

-Håber, I kan hjælpe...
  W13
Avatar billede ztyxx Nybegynder
23. december 2003 - 22:57 #1
valider med javascript inden submit

<html>
<head>

<title>Tjek felt</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

</head>

<body>
<script language="javascript">
<!--
function tjek(){
    if (form1.felt1.value == ""){
        alert('feltet skal udfyldes')
        }
        }
//-->
</script>
<form name=form1 method=post action="fil.php" onsubmit="tjek()">
<input type="text" name="felt1"><input type="submit" value=send>
</form>
</body>
</html>
Avatar billede ellebaek Nybegynder
23. december 2003 - 22:57 #2
<script language="JavaScript" type="text/javascript">
<!--
  function val(f) {
        if (f.navn.value.length < 1) {
            alert("du har glemt at indtaste dit navn");
            return false;
        }
        if (f.adresse.value.length < 1) {
            alert("du har glemt at indtaste din adresse");
            return false;
        }
        if (f.postnummer.value.length < 1) {
            alert("du har glemt at indtaste dit postnummer");
            return false;
        }
        if (f.by.value.length < 1) {
            alert("du har glemt at indtaste din by");
            return false;
        }
        if (f.telefonnummer.value.length < 1) {
            alert("du har glemt at indtaste dit telefonnummer");
            return false;
        }

        if (emailCheck(f.email.value) == false) {
            alert('Du har ikke indtastet en gyldig E-mail');
            return false;
        }
   
        if (f.kodeord.value.length < 1) {
            alert("du har glemt at indtaste dit kodeord");
            return false;
        }
   
   
        return true;
    }

//-->
    </script>




Denne linie skal tilføjes din submitknap.
onSubmit='return val(this);'

Så kan du rette den til ved:
f.xxxxxxx.value.length

at rette xxxxxxx til navnet på det felt du vil have cheket..
Avatar billede w13 Novice
23. december 2003 - 23:19 #3
-Jeg har brugt Ztyxx' svar, og det virker da også... Næsten... Problemet er nemlig, at oplysningerne bliver gemt, selvom den skriver, at man skal udfylde feltet...
Avatar billede ellebaek Nybegynder
23. december 2003 - 23:33 #4
prøv med min i stedet...!
Avatar billede thesurfer Nybegynder
23. december 2003 - 23:41 #5
En mere avanceret udgave.. du indstiller de felter der gerne må være tomme, i tilladt="feltnavn her"..

<SCRIPT text="text/JavaScript">
<!--
function validate()
{
// disse felter må gerne være tomme:
var tilladt="felt1,sadsa";
var ok = "ja";

el = document.forms['frminfo'].elements;
for(i=0;i<el.length - 1;i++){
  if ( (tilladt.indexOf(el[i].name) < 0) && (el[i].value.length == 0) && (el[i].type == "text") ) {
  ok = "nej";
  }
}

if (ok == "nej") {
  alert("Du skal udfylde alle felter!");
  return false;
} else {
return true;
}

}
//-->
</SCRIPT>

<form name="frminfo" action="gem.asp" method="post" onSubmit="return validate()">
<input type="text" name="felt1" value="asdasd">
<input type="text" name="sadsa" value="fdgdf">
<input type="text" name="asd" value="dfg">
<input type="text" name="asd" value="dfg">
<input type="text" name="sdasdasda" value="">
<input type="text" name="feasdlt6" value="felt6">
<input type="text" name="asd" value="sdfsdfs">
<input type="submit" value="Send Oplysninger!">
</form>
Avatar billede thesurfer Nybegynder
23. december 2003 - 23:44 #6
Hvis du bruger mit script, skal du bare rette "frminfo":
<form name="frminfo"
el = document.forms['frminfo'].elements;

Og action:
action="gem.asp"

Som sagt, de felter der godt må være tomme (feltnavnene separaret af komma):
var tilladt="felt1,sadsa";

Det var det.
Avatar billede thesurfer Nybegynder
23. december 2003 - 23:45 #7
By the way.. i modsætning til de andres kode, er min kode "dynamisk", det vil sige, at det er lige meget om du ændrer antallet eller navnene på felterne :)
Koden er den samme.
Avatar billede thesurfer Nybegynder
24. december 2003 - 00:02 #8
Hehe.. jeg har lige fundet en lille fejl i mit script :)
Hvis "tilladt" indeholder "email", og et ikke tilladt felt hedder "ema", vil det blive godkendt, da "ema" er en del af "EMAil" :)
Avatar billede thesurfer Nybegynder
24. december 2003 - 00:10 #9
Retter det lige.. hvis du mener at det er et problem..
Avatar billede thesurfer Nybegynder
24. december 2003 - 00:23 #10
OK.. lidt mere kompliceret end jeg havde regnet med.. men giver ikke op..
Avatar billede thesurfer Nybegynder
24. december 2003 - 00:45 #11
Hmm.. Kan man ikke lave en for loop inde i en for loop?
Avatar billede thesurfer Nybegynder
24. december 2003 - 01:21 #12
Her er den nye udgave.. Felterne der *skal* udfyldes indsættes i skal_udfyldes:
var skal_udfyldes = new Array("fornavn", "efternavn", "adresse", "email");

Og igen må du kalde felterne hvad du vil, og du må selvfølgelig slette og rette i felterne, bare du retter i skal_udfyldes.
Formen er bare et eksempel.

<SCRIPT text="text/JavaScript">
<!--
function validate()
{
// checkpoint-boolean-switch-ting:
var ok = "ja";

// disse felter må gerne være tomme:
var skal_udfyldes = new Array("fornavn", "efternavn", "adresse", "email");

el = document.forms['frminfo'].elements;
for(var i=0;i<el.length - 1;i++){

  for (var a=0; a < skal_udfyldes.length; a++) {

    if ( (el[i].name == skal_udfyldes[a]) && (el[i].value.length == 0) && (el[i].type == "text") ) {
      ok = "nej";
    }
  }
}

if (ok == "nej") {
  alert("Du skal udfylde alle felter markeret med * !");  return false;
} else {
  return true;
}

}
//-->
</SCRIPT>

<form name="frminfo" action="allowMT.htm" method="post" onSubmit="return validate()">
Fornavn: <input type="text" name="fornavn" value="jens"> *
Efternavn: <input type="text" name="efternavn" value="Jensen"> *
Adresse: <input type="text" name="adresse" value="EnVej 2"> *
Email: <input type="text" name="email" value="jens@jensen.dk"> *
Website: <input type="text" name="website" value="webby">
Mobilnr: <input type="text" name="mobilnummer" value="mobi">
<input type="submit" value="Send Oplysninger!">
</form>
Avatar billede thesurfer Nybegynder
24. december 2003 - 01:26 #13
hmm.. stavefejl o.lign..

Selvom det ikke har nogen betydning, erstat:
// disse felter må gerne være tomme:

med:
// disse felter *skal* udfyldes:

Her rettes formnavn og action:
<form name="frminfo" action="allowMT.htm"
el = document.forms['frminfo'].elements;

Grunden til at jeg bruger formnavn og ikke "0", er at du kan have flere forms på din side. Hvis du bruger "0", skal du rette det til "1" hvis du placerer en form før denne.

By the way.. Jeg kender ikke nogen Jens Jensen :)
Avatar billede w13 Novice
25. december 2003 - 21:18 #14
-Tja, jeg fik ikke Ztyxx's og Ellebaek's til at virke... Men Thesurfer's virkede fint... Pointene går til ham..
Avatar billede thesurfer Nybegynder
26. december 2003 - 00:13 #15
Jeg takker for points.
- Glædelig jul og godt nytår.
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

IT-JOB

Forsvarsministeriets Materiel- og Indkøbsstyrelse

Cyberdivisionen søger analytisk stærk og erfaren medarbejder i Hvidovre

Forsvarsministeriets Materiel- og Indkøbsstyrelse

Solution Manager til Cyberdivisionen

Everllence

Data Engineer