Avatar billede foxmulder58 Praktikant
27. oktober 2005 - 14:42 Der er 22 kommentarer og
2 løsninger

Angive størrelse på formular

Ja det her er egentlig 2 spørgsmål til min formular her:

http://netau.dk.linux14.wannafind.dk//formular_ledelse.htm

1. Hvrodan laver jeg det således at når man klikker på send åbner den et nyt browser vindue som jeg angiver størrelsen på?

2. Hvordan kan man lave det således at vinduet melder om ikke korrekte indtastninger og blot viser en knap der fører tilbage til formularen igen?




mvh
mads
Avatar billede foxmulder58 Praktikant
27. oktober 2005 - 14:43 #1
Er det kun muligt v.h.a af et sådant java script:

<script language="JavaScript">
function newWindow(url, height, width) {
    nameW='feature'
if (navigator.appVersion.indexOf('4') != -1) {
// Vars for centering the new window on Version 4 Browsers
xTop = screen.width/2 - (width/2);
yTop = screen.height/2 - (height/2);
window.open(url, nameW, 'height='+height+',width='+width+',scrollbars=0,resizable=0,menubar=0,toolbar=0,status=0,location=0,directories=0,left=' + xTop + ',top=' + yTop + '');
} else {
window.open(url, nameW, 'height='+height+',width='+width+',scrollbars=0,resizable=0,menubar=0,toolbar=0,status=0,location=0,directories=0,left=150,top=200');
}
}
</script>
Avatar billede johan.o Nybegynder
27. oktober 2005 - 15:05 #2
Når jeg står i samme situation, altså at skulle have en formular valideret, benytter jeg mig oftest af følgende løsning.

<form> */ noget form indhold */ </form>

under denne form sætter jeg så en knap, ikke en 'submit' men blot en knap som aktivere et javascript som validere de forskellige felter. Hvis scriptet så opdager at et felt ikke er udfyldt tilfredstillende synliggøres en fejlmeddelelse og det aktuelle felt i formularen får focus. Hvis formularen kan godkendes af scriptet aktivere scriptet afsendelsen af formen.

Som oftest sender jeg form's til et php script, og det er vist også det du bokser med for øjeblikket :-). I php scriptet laver jeg så igen en validering af de indtastede oplysninger. Hvis der opstår problemer med valideringen i php, og jeg ellers har lavet mit valideringsarbejde godt nok betyder det at nogen har forsøgt at omgå mit javascript og derfor sikkert er ude i et mindre venligt ærinde. Derfor sender php blot en location.href med formen således at brugeren kan starte forfra med indtastningerne men denne gang med et opdateret javascript.

Hvis brugeren ikke er ude i et uvenligt ærinde, så vil scriptet sørge for at formen ikke bliver afsendt til serveren før den opfylder mine betingelser. Derved mindsker jeg server belastning og brugeren skal ikke downloade siden flere gange før den sendes.

Det jeg prøver at sige er at det sikkert kan lade sig gøre at åbne et ekstra vindue, men det er IMO langt fra den bedste løsning, bare tænk på at langt de fleste browsere idag slet ikke viser popup's men blot viser en advarsel om at en popup er blevet undertrykt.....som alle derefter ignorer.

Jeg prøvede at give dig værktøjerne til et sådan script i et andet spørgsmål. Lad mig høre hvis du vil prøve denne vej istedet så skal jeg forsøge at hjælpe dig igang hvis det er nødvendigt.

Mvh. Johan
Avatar billede roenving Novice
27. oktober 2005 - 18:49 #3
1. En ret usikker metode, som dog ofte virker i simple sammenhænge:

<form action=" ... " method="post" target="MyNewWindow" onsubmit="window.open('','MyNewWindow','height=200,width=300,status=0');">

2. Validerings-scripts findes i mylliarder, både på eksperten (jeg tror personligt, jeg har skrevet dem i tusindvis !-) og mange andre steder, og standard-funktionen bør være, at der vises en fejlmeddelelse (f.eks. en alert) og blokeres for afsendelse !o]
Avatar billede foxmulder58 Praktikant
27. oktober 2005 - 19:18 #4
Johan o. ja tak det er denne vej jeg gerne vil.

Jeg tror jeg bruger metoden

formular ---> php validering (bruger tjekker i browser vindue om idntastninger er korrekt, klikker ok ---> sender derme oplysninger til min sekretær og dernæst til egen mail.!


mvh
mads
Avatar billede foxmulder58 Praktikant
27. oktober 2005 - 20:56 #5
hej Johan O. og roenving smider i et svar!
Avatar billede johan.o Nybegynder
27. oktober 2005 - 21:22 #6
Her er lidt html jeg har strikket sammen der er et par metoder til at checke form felter.

<!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.0//EN' 'http://www.w3.org/TR/REC-html40/strict.dtd'>
<html>
<head>
<title>foxmulder58</title>

<script type='text/javascript'>

function oValidate()
{
form_err=false;

uName_n=document.getElementsByName('navn_name').item(0).value;
uName_i=document.getElementById('navn_id').value;

if(uName_i=="" || uName_i.length>30 || uName_i.indexOf('/')>-1)
  {
  alert("Der er noget galt i navnet !")
  document.getElementById('err_navn').style.display='block';
  form_err=true;
  }

uEfter_i=document.getElementById('efter_id').value;

if(uEfter_i=="")
  {
  alert("Der er noget galt i efternavnet !")
  document.getElementById('err_efter').style.display='block';
  form_err=true;
  }

if(form_err===false)
  {
  document.getElementById('oForm').submit();
  }
}

</script>
</head>

<body>

<form action='validate.php' id='oForm' name='oForm' method='post'>

<span>Navn : <input type='text' id='navn_id' name='navn_name' onfocus="document.getElementById('err_navn').style.display='none'";></span>
<span>Efternavn : <input type='text' id='efter_id' name='efter_name' onfocus="document.getElementById('err_efter').style.display='none'";></span><br>

</form>

<span><button type='button' onclick='oValidate();'>Send form</button></span>

<span id='err_navn' style='display: none;'>Der er noget galt i navnet !</span>
<span id='err_efter' style='display: none;'>Der er noget galt i efternavnet !</span>

</body>
</html>

Jeg sender lige op med det samme så må forklaring komme om lidt.

Mvh. Johan
Avatar billede johan.o Nybegynder
27. oktober 2005 - 21:51 #7
Og på den anden side kan du også lige kigge koden igennem og så spørge til indholdet for det er lige gået op for mig at det er temmelig omfangsrigt at skulle forklare alle elementerne.

Men læg bl.a. mærke til at der ikke er nogen submit knap men istedet er en knap som aktivere funktionen oValidate. Hvis funktionen finder indholdet i formen i orden så sender den formen via document.getElementsById('oForm').submit();

Funktionen 'kigger' i formen via to forskellige metoder (i demonstrationens navn) den ene er documents.getElementById() som kræver at du definere attributten 'ID' på <input> tag'sne.

Den anden er document.getElementsByName() som er en lidt anden metode som 'kigger' i formen via 'NAME' attributten.

Derudover er der vist to metoder til at advisere brugeren om at der er 'fejl' i formen. Den ene er et lille vindue som aktiveres via alert(), den anden er beskeder på skærmen som 'tændes' og 'slukkes' men style.display (Som virker både i FF og IE ... he he) Undskyld det var bare en intern hentydning.

Men kig på det og prøv at strikke noget sammen selv i din form og så tager vi den derfra.

Mvh. Johan
Avatar billede foxmulder58 Praktikant
27. oktober 2005 - 23:51 #8
hej Johan o.

Det kigger jeg på imorgen

tusind tak for din hjælp, du skal nok få point!


mvh
Mads
Avatar billede roenving Novice
28. oktober 2005 - 07:45 #9
>>Mads

-- har du et SSL-certifikat på din server, for det er en slags bedrageri, at lokke folk til at sende fortrolige oplysninger over åbne forbindelser, og det kræver iøvrigt, såvidt jeg ved, Registertilsynets eksplicitte tilladelse at registrere cpr-numre !-)

>>johan.o

-- din valideringsmetode er en afart af den, det ofte, med god grund -- også i dette tilfælde, udskældte site html.dk promoverer ...

-- normalt er det rent tåbeligt at placere en knap udenfor formen, for der er ikke den fjerneste grund til, at den ikke er inkluderet i formen, og handlinger, der forekommer på form-elementer inde i en form giver direkte adgang til formen, så man sparer en af de vedligeholdelsesting, som kan være en pine i nakken ...

-- desuden indeholder et form-tag en helt unik event, som kan bruges til at blokere afsendelse af formen, og på den måde kan man direkte udføre, hvad man intenderer !-)

-- metodikken, du benytter, er meget velegnet til de tilfælde, hvor man vil opsamle een fejlmeddelelse, som omfatter alle fejl, og ikke vil komme med fejl en ad gangen, for med nogle formularer er det ikke helt indlysende, hvorfor man risikerer at få adskillige fejlmeddelelser inden man endelig kan sende ...

-- en standard-validering vil f.eks. se således ud:

<script type="text/javascript">
function valider(f){
  if(f.navn.value == "" || f.navn.value.length > 30){
    alert("Fejl i navnet");
    f.navn.focus();
    return false;
  }
  if(!f.postnr.value.match(/^\d{3,4}$/)){
    alert("Fejl i postnummer");
    f.postnr.focus();
    return false;
  }

//osv.

  return true;
}
</script>

<form action=" ... " method="post" onsubmit="return valider(this);">

-- en fejl-akkumulerende ser f.eks. sådan ud:

<script type="text/javascript">
function valider(f){
  var txt="",flt=null;
  if(f.navn.value == "" || f.navn.value.length > 30){
    txt += "\tFejl i navnet\n";
    if(!flt)flt=f.navn;
  }
  if(!f.postnr.value.match(/^\d{3,4}$/)){
    txt+="\tFejl i postnummer\n";
    if(!flt)flt=f.postnr;
  }

//osv.

  if(flt){
    alert("Der er fundet følgende fejl i formularen:\n" + txt);
    return false;
  }else
    return true;
}
</script>
Avatar billede johan.o Nybegynder
28. oktober 2005 - 10:02 #10
onsubmit="return valider(this);" .... genialt :) og dog så enkelt.

html.dk ? bruger det ikke, og det er jo godt kan jeg forstå. :)

Vi kan kun blive enige om at din onsubmit ting har mange fordele over knap tingen, men jeg kunne da godt tænke mig at høre om der er fundametale ting galt med at 'kigge' i formen med f.eks. document.getElementById(), når nu du skriver at metoden er udskældt.

Mvh. Johan
Avatar billede roenving Novice
28. oktober 2005 - 10:19 #11
Den fundamentale fejl er besvær med vedligeholdelse (altså er der ikke noget rigtigt galt !-)

-- skriver du et valideringsscript på ovenstående måde, kan du faktisk have flere forskellige forms i samme dokument, som du validerer med det samme script ...
Avatar billede roenving Novice
28. oktober 2005 - 10:20 #12
-- og jeg sad og var i tvivl om else-tingen skal med i den sidste, og det skal den nok ikke !-)

//osv.

  if(flt){
    alert("Der er fundet følgende fejl i formularen:\n" + txt);
    return false;
  }
    return true;
Avatar billede roenving Novice
28. oktober 2005 - 10:21 #13
Hov, der mangler jo en focus-ting:

//osv.

  if(flt){
    alert("Der er fundet følgende fejl i formularen:\n" + txt);
    flt.focus();
    return false;
  }else
    return true;
Avatar billede johan.o Nybegynder
28. oktober 2005 - 10:27 #14
'Det godt nok smart' :)

foxmulder58 : Der skulle være noget at arbejde med der, giv lyd hvis du får flere problemer.

Mvh. Johan
Avatar billede roenving Novice
28. oktober 2005 - 10:31 #15
-- og *lol*, jeg gentog så den forkerte kode:

//osv.

  if(flt){
    alert("Der er fundet følgende fejl i formularen:\n" + txt);
    flt.focus();
    return false;
  }
  return true;
Avatar billede foxmulder58 Praktikant
02. november 2005 - 15:50 #16
hej Roenving jeg kan ikke lige gennemskue den her må jeg maile denne formular til dig så du kan kigge med?

mvh
Mads
Avatar billede roenving Novice
02. november 2005 - 15:52 #17
Tjah, hvorfor ikke, men jeg er på vej ud af døren nu ...

-- men det må være en betingelse, at du finder adressen i min profil og ikke skriver den i klatekst nogen steder !-)
Avatar billede foxmulder58 Praktikant
03. november 2005 - 11:27 #18
hej Roenving,

Jeg ved hvor jeg finder din mail, jeg angiver den ingen steder.

Jeg sender det til dig iaften , så må kigge på det.

Jeg ved ikke hvorledes vi gør det med point men må dele opgaven op i etaper, og jeg giver points ud fra disse.


tusind tak for hjælpen indtil videre.

PS! har bygget videre på formularen, der er nu kun ganske små funktioner endnu som jeg håber du kan hjælpe med!

mvh
Mads
Avatar billede roenving Novice
04. november 2005 - 12:31 #19
Kig i min profil (og husk at fjerne mellemrum og undersættelser !-)
Avatar billede foxmulder58 Praktikant
08. november 2005 - 15:18 #20
smider du forresten et svar her roenving?

mvh
Mads
Avatar billede foxmulder58 Praktikant
08. november 2005 - 15:23 #21
johan.o smid også et svar!
Avatar billede johan.o Nybegynder
08. november 2005 - 15:48 #22
Siger da ikke nej :)
Avatar billede roenving Novice
09. november 2005 - 03:20 #23
Velbekomme '-)
Avatar billede roenving Novice
22. november 2005 - 02:19 #24
-- 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