Avatar billede claushelth Nybegynder
06. februar 2003 - 21:34 Der er 26 kommentarer og
1 løsning

onsubmit="[script]" virker ikke

Jer har lavet en form hvor man skal kunne indsætte en ny artikel.

Formen virker så hvis en bruger har glemt at indtaste et felt, og kommer til at sende, så forbliver de øvrige indskrevet felter der stadigvæk.

Problemet er når den endelig er sendt så virker min ryd knap ikke mere. Det gør så ikke så meget, for man skal ikke komme til at indsende den samme artikel 2 gange. Ferfor vil jeg have onsubmit til at slette alt hvad der står i disse felter, så den er klar til næste artikel.

Ps. Jeg vil selvfølgelig stadig gerne have ryd til at virke 100%, ellers virker den netop ikke når man vil skrive den næste artikel ind!!

Min kode:

<form method=post action="<?php echo $PHP_SELF; ?>">
  <input type="hidden" name="send_artikel" value="send_artikel">
  Forfatter: <br> <input type="text" size="30" name ="forfatter" value="<?php if(isset($_POST['forfatter'])) echo $_POST['forfatter'];?>"><br><br>
  Overskrift:<br> <input type="text" size="60" name ="overskrift" value="<?php if(isset($_POST['overskrift'])) echo $_POST['overskrift'];?>"><br><br>
  Indhold:  <br> <textarea type="text" name ="tekst" rows="10" cols="50"><?php if(isset($_POST['tekst'])) echo $_POST['tekst'];?></textarea><br>
  <input type="submit" value="Send" onsubmit="<?php if(isset($_POST['forfatter']) OR isset($_POST['overskrift']) OR isset($_POST['teskst'])){ echo "";}?>">
  <input type="reset" value="Ryd felter" onreset="<?php if(isset($_POST['forfatter']) OR isset($_POST['overskrift']) OR isset($_POST['teskst'])){ echo "";}?>">
</form>

egentlig er det det samme jeg gør ved onresset og onsubmit, så jeg håber på en anden løsning.

claus
Avatar billede claushelth Nybegynder
06. februar 2003 - 21:36 #1
Lige nu kører den videre som om der intet står i onsubmit!!

:-)
Avatar billede alrua Nybegynder
06. februar 2003 - 21:38 #2
erm - der _står_ teknisk set heller ikke noget...PHP-koden forsvinder jo når den bliver sendt til browseren...du kan kun skrive javascript i onsubmit-felter :P
Avatar billede claushelth Nybegynder
06. februar 2003 - 21:42 #3
ok...hmmm jeg kender ikke så meget til java endnu :-), og bliver den så ikke afhæning af om brugerens browser er komp. med java?
Avatar billede =maddog= Nybegynder
06. februar 2003 - 21:45 #4
javaSCRIPT har intet med java at gøre. Dit script skal naturligvis tilpasses de browsere du ønsker de skal kunne virke i.
Avatar billede claushelth Nybegynder
06. februar 2003 - 22:03 #5
Er der nogle der har en helt anden løsning på denne form, så jeg kan lave den i ren php?

Har jeg ret hvis jeg siger at det er meget få browsere der ikke kan køre javascript...eller hvad?
Avatar billede miraculix Nybegynder
06. februar 2003 - 22:35 #6
Prøv at flytte onSubmit til form-tagget
Avatar billede claushelth Nybegynder
06. februar 2003 - 22:39 #7
? hvilkent et form-tag...(det sidste går jeg udfra :-)), og hvor skal det stå forhold til </form>?
Avatar billede claushelth Nybegynder
06. februar 2003 - 22:40 #8
Her virker det ikke?...jeg forstår vist ikke helt hvad du mener?

<form method=post action="<?php echo $PHP_SELF; ?>">
  <input type="hidden" name="send_artikel" value="send_artikel">
  Forfatter: <br> <input type="text" size="30" name ="forfatter" value="<?php if(isset($_POST['forfatter'])) echo $_POST['forfatter'];?>"><br><br>
  Overskrift:<br> <input type="text" size="60" name ="overskrift" value="<?php if(isset($_POST['overskrift'])) echo $_POST['overskrift'];?>"><br><br>
  Indhold:  <br> <textarea type="text" name ="tekst" rows="10" cols="50"><?php if(isset($_POST['tekst'])) echo $_POST['tekst'];?></textarea><br>
  <input type="submit" value="Send">
  <input type="reset" value="Ryd felter" onreset="<?php if(isset($_POST['forfatter']) OR isset($_POST['overskrift']) OR isset($_POST['teskst'])){ echo "";}?>">
   
    <onsubmit="<?php if(isset($_POST['forfatter']) OR isset($_POST['overskrift']) OR isset($_POST['teskst'])){ echo "";}?>">

</form>
Avatar billede miraculix Nybegynder
06. februar 2003 - 22:41 #9
Nej onSubmit hører til efter f.eks. action="" i <form  tagget.

Men det kommer stadig ikke til at virke uden nogte mere javascript
Avatar billede claushelth Nybegynder
06. februar 2003 - 22:42 #10
ok...har slet ikke styr på jScript
Avatar billede claushelth Nybegynder
06. februar 2003 - 22:42 #11
Det optimale for mig og se vil være at få det hele i php, så ALLE kan være med i festen :-)
Avatar billede sukos Juniormester
06. februar 2003 - 22:46 #12
Brug sessions!
Og brug en include i toppen af din formside, som så rent faktisk er den som gemmer info.
<?php
include("actions.php");

......... og så videre med din form.

actions.php starter så med:
<?php
session_start();

.................

Og hvis der klikkes på submit, er det faktisk actions.php som håndterer dem, og derefter redirecter til form siden.
header("Location:form.php")

For hvert formfelt, kan du så spørge om en session er sat, og hvis den er, så lav output for feltet.
Avatar billede miraculix Nybegynder
06. februar 2003 - 22:48 #13
OK,
først skal du vide at reset knappen gendanner formen som den blev loadet. Eftersom du hele tiden loader formen med de tidligere data, så kommer der data i den loadede udgave.

Kan du ikke bare nulstille felterne før du viser formen igen, hvis alle data var der?
Avatar billede sukos Juniormester
06. februar 2003 - 22:50 #14
hm, forstår heller ikke helt dit spm, (nu hvor jeg har læst det igennem!!!)
En brugersender en halvt udfyldt form, og det virker selvf. ikke!
Men hvorfor skal brgeren så starte på en ny artikel?
Når nu den første ikke gik igennem?
Avatar billede claushelth Nybegynder
06. februar 2003 - 22:51 #15
jeg tror jeg ved hvad du mener!! Jeg har da også lavet andre forms på denne måde)

Ideen med den her form er at php-koden står på samme side som min form, og derfor vil jeg ikke redirecte. Blot sige om indsættelse er gået godt/skidt eller informere om hvis ikke alle felter er udfyldt. Min submit og ryd felter skal begge kunne slette indhold i alle felter (dog skal submit kun gøre det hvis de alle er udfyldt...da den jo så er sendt afsted).
Avatar billede miraculix Nybegynder
06. februar 2003 - 22:53 #16
Hvis du ikke vil bruge javascript skal du i hvert fald droppe alt med onSubmit og onReset De to _er_ javascript.

Men i den del af din kode hvor du gemmer data, kan du jo bare nulstille f.eks. sådan:
$_POST['FORFATTER'] = "";
Avatar billede miraculix Nybegynder
06. februar 2003 - 22:53 #17
Altså hvis alle data var udfyldt.
Ellers lader du dem bare stå...
Avatar billede miraculix Nybegynder
06. februar 2003 - 22:56 #18
Efter min mening er det nu bedst at supplere med client-side validering (altså javascript). Så slipper brugeren for at submitte formen for at finde ud af at den ikke var helt udfyldt og du kan også styre hvor cursoren skal stå..
Avatar billede claushelth Nybegynder
06. februar 2003 - 23:01 #19
ja...jeg hører dig :-) , det er nok også mere en principsag.

miraculix -> Grunden til at jeg ikke tror jeg kan gøre som du skriver med $_POST['FORFATTER'] = ""; er fordi den returnere jo ikke værdien ned i formen. Efter koden er kørt iggennem forbliver formen, der bliver ikke redirektet til en ny...hmmmmen det er måske den eneste mulighed så. Altså når koden har kørt korrekt så redirecte til den samme side igen. Prøver den lige
Avatar billede claushelth Nybegynder
06. februar 2003 - 23:07 #20
miraculix -> AHHHHHHH...takker for en 100% løsning, det var lige det der skulle til.

Jeg nulstillede alle felterne (f.eks. $_POST['FORFATTER'] = ""; ) i php-koden, så blev de også nulstillet i formen, smart det var jeg ikke klar over var muligt. Lige det jeg ville have uden at redirecte.

hvis i vil se det så kig her... http://www.chelth.dk under indsæt nyheder og vis nyheder. Det er rimelig nemt at få noget til at virke, det svære er at håndtere alle fejlene.

Jeg takker for alles indsats.
Avatar billede miraculix Nybegynder
06. februar 2003 - 23:09 #21
Hov prøv lige denne her også:
<!-- --------------------------------- -->

<script language="javascript">
function chkForm() {
    var f = document.form1;
    if (  f.forfatter.value == '' ) {
        alert('Husk forfatteren!');
        f.forfatter.focus();
        return false;
    }
    if ( f.overskrift.value == '') {
        alert('Husk overskriften!');
        f.overskrift.focus();
        return false;
    }
    if ( f.tekst.value == '') {
        alert('Husk teksten!');
        f.tekst.focus();
        return false;
    }   
    return true;
}
</script>

<form name="form1" onSubmit="return chkForm();" method=post action="<?php echo $PHP_SELF; ?>">
  <input type="hidden" name="send_artikel" value="send_artikel">
  Forfatter: <br> <input type="text" size="30" name="forfatter" value=""><br><br>
  Overskrift:<br> <input type="text" size="60" name="overskrift" value=""><br><br>
  Indhold:  <br> <textarea type="text" name="tekst" rows="10" cols="50"></textarea><br>
  <input type="submit" value="Send" >
  <input type="reset" value="Ryd felter">
</form>

<!-- --------------------------------- -->
Den virker i IE, jeg tester lige med et par andre...
Avatar billede claushelth Nybegynder
06. februar 2003 - 23:10 #22
en lille note: jeg har endlig fået lavet min side i 100% php med sql, og det funger sku meget godt.
Avatar billede miraculix Nybegynder
06. februar 2003 - 23:14 #23
NS 4.78+ og opera 6.03 ok..

Det bedste er jo under alle omtændigheder at lade dem supplere hinanden
Avatar billede claushelth Nybegynder
06. februar 2003 - 23:17 #24
Ja det virker også...lige nu kører den med JS på http://www.chelth.dk

sukos -> Jeg kan takke dig for meget af supporten...har gennemlæst mange gamle ?

miraculix -> takker igen...den nok noget hurtigere (JS), men du ved når man har principper (der er ellers meget fancy med JS)
Avatar billede claushelth Nybegynder
06. februar 2003 - 23:17 #25
måske beholder jeg den alligevel...hvem ved
hehe...  ;-)
Avatar billede miraculix Nybegynder
06. februar 2003 - 23:24 #26
I øvrigt tager din side sig helt ok ud i lynx... Den er nem at bruge fordi din venstremenu kommer oppe i toppen af siden..
Avatar billede claushelth Nybegynder
06. februar 2003 - 23:33 #27
takker mange gange...må hellere lukke inden nogle bliver sure.
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