Avatar billede mortvader Nybegynder
20. maj 2010 - 12:55 Der er 28 kommentarer og
1 løsning

onblur / submit problem

Hejsa!

Jeg har en html form.
I formen er der en række fælter. På visse af felterne har jeg i OnBlur lagt en "submit();" ind.

Dvs. formen submitter (og reloader siden) hvis man har ændret indhold i feltet og exiter feltet.

Men.

Der er også en alm. submit knap.

Sådan en standard submit knap er dejlig at have, for så kan brugeren bare trykke på return-tasten for at submitte formen.

Problemet:

Når brugeren trykker enter efter at have rettet noget i et felt (hvor jeg submitter onblur) - ja så submittes formen 2 gange i træk: 1 gang for onblur-handleren, og 1 gang fra submit-knappen.

Er der nogen der har en nem løsning til at undgå denne dobbelt-submit?
Avatar billede majbom Novice
20. maj 2010 - 13:16 #1
jeg ved ikke om der findes en bedre metode, men du kunne evt lave noget javascript der satte en variabel til true når formen blev submittet og hvis denne allerede var true, kunne der ikke submittes igen
Avatar billede jokkejensen Novice
20. maj 2010 - 13:26 #2
i din onblur, ligger du en keypress event der returnere false på [enter]

JS variabler skulle gerne forsvinde ved begge submits !

/J
Avatar billede mortvader Nybegynder
20. maj 2010 - 13:30 #3
Jokkejensen, jeg er ikke den skarpeste kniv i skuffen mht JS.
Kan du give et kort eksempel på hvordan jeg laver det keypress event?
Avatar billede majbom Novice
20. maj 2010 - 13:32 #4
-> jokke - det er jo osse lige meget at variablen går tabt, da det skal være muligt at submitte formen igen efter reload af siden, formoder jeg...
Avatar billede jokkejensen Novice
20. maj 2010 - 13:37 #5
function disableEnterKey(e)
{
    var key;

    if(window.event)
          key = window.event.keyCode;    //IE
    else
          key = e.which;    //firefox

    if(key == 13)
          return false;
    else
          return true;
}

<input onblur="ditJS" onkeypress="return disableEnterKey(event)" />
Avatar billede olebole Juniormester
20. maj 2010 - 13:40 #6
jokke >> Skal der ikke tages højde for Firefox? Den bruger EVENT.stopPropagation() i stedet for at returnere false i eventhandleren
Avatar billede mortvader Nybegynder
20. maj 2010 - 13:45 #7
Det virker, Jokke! Tak!
Læg et svar.
Avatar billede olebole Juniormester
20. maj 2010 - 13:53 #8
Jeg forstår ikke problemet. Hvios der overhovedet eksisterer et problem, bør jokkejensens kode kun virke i IE.

På den anden side submitter denne kode, som det ses, kun én gang:

<?php
if (isset($_POST['contxt']) && $_POST['contxt']=='testing') {
    $fp = fopen("test.txt", "a");
    fwrite($fp, "Hep");
    fclose($fp);
}
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Untitled Document</title>

</head>
<body>

<form action="" method="post" onsubmit="">
<p><input type="hidden" name="contxt" value="testing"></p>
<p><input type="text" name="foo" onblur="this.form.submit()"></p>
<p><button type="submit">SEND</button></p>
</form>

</body>
</html>

- hvorfor noget kunne tyde på, der faktisk ikke er et problem  =)
Avatar billede jokkejensen Novice
20. maj 2010 - 13:55 #9
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title>Untitled Page</title>   
    <script type="text/javascript">       
        function disableEnterKey(e)
        {
            var key;

            if(window.event)
                  key = window.event.keyCode;    //IE
            else
                  key = e.which;    //firefox

            if(key == 13)
                  return false;
            else
                  return true;
        }
    </script>
</head>
<body>
    <form onsubmit="window.alert('weeeee');return false;">
        <input type="text" name="a" onkeypress="return disableEnterKey(event)" />    
        <input type="text" name="b" />
        <input type="submit" value="submit" />
    </form>
</body>
</html>


Det virker altså fint i IE og FF..
Avatar billede mortvader Nybegynder
20. maj 2010 - 14:03 #10
Ja for helved!!! :D

Det virker sgu fint for mig. Bare læg et svar, Jokkejensen!
Avatar billede olebole Juniormester
20. maj 2010 - 14:04 #11
Jaja ... og det virker også helt uden JS. Derfor virker det naturligvis også i FF  ;o)
Avatar billede olebole Juniormester
20. maj 2010 - 14:04 #12
jokke >> Prøv koden i  #8
Avatar billede jokkejensen Novice
20. maj 2010 - 14:07 #13
takker :)


#8 som i IE8 ?
Avatar billede jokkejensen Novice
20. maj 2010 - 14:07 #14
how det skulle være et svar
Avatar billede olebole Juniormester
20. maj 2010 - 14:09 #15
mortvader >> Da jokke øjensynligt ikke er interesseret, må du såmænd også gerne teste koden i #8. Så kan du se, der ikke er noget problem med dobbelt submit. Hvis dit problem med dobbelt submit ikke blot er en ond drøm, må problemet altså ligge et andet sted  =)
Avatar billede jokkejensen Novice
20. maj 2010 - 14:11 #16
Det ligger et andet sted, men han leder jo bare efter en løsning.

Jeg har ikke et apache/php miljø kørende, så kan ikke teste det der.
Avatar billede olebole Juniormester
20. maj 2010 - 14:16 #17
*LoL* Jamen, så kan du da bare teste i et hvilket somhelst andet miljø ... det er jo klientkoden, der er interessant. Serverkoden er blot en registrering af, om der er submittet.

Koden skriver blot ordet "Hep" til i en fil på serveren, hvergang der submittes. Står der "Hep", er der submittet én gang - står der "HepHep", er der submittet to gange. Det er ikke sværere end "Hello World"  ;o)

Der submittes kun én gang i IE, Firefox og Opera ... med eller uden JavaScript
Avatar billede olebole Juniormester
20. maj 2010 - 14:18 #18
"Det ligger et andet sted, men han leder jo bare efter en løsning." >> Ja, man kan jo også forbedre en bils brændstoføkonomi ved helt at fjerne dens tændrør - men mon ikke det ville være bedre at adressere det egentlige problem?  =)
Avatar billede jokkejensen Novice
20. maj 2010 - 14:20 #19
ok, jamen så har han jo aldrig haft et problem.
Avatar billede jokkejensen Novice
20. maj 2010 - 14:26 #20
Du må da hjerteligt gerne finde det egentlige problem.

Jeg har kun taget stilling til spørgsmålet, ikke om han lever i et skummelt .net usercontrol miljø hvor sådanne ting kan være svære at adressere..

/J
Avatar billede olebole Juniormester
20. maj 2010 - 14:34 #21
Okay, så skyldes vores forskellige tilgang nok, at jeg foretrækker at løse folks problemer - ikke sløre deres symptomer  =)
Avatar billede jokkejensen Novice
20. maj 2010 - 14:35 #22
ja, jeg er nok mere en stor nødløsning -> men jeg lover det går stærkt ! :)
Avatar billede olebole Juniormester
20. maj 2010 - 15:54 #23
Hvis du ønsker, at vi alle får glæde af dit DNA i mange år fremover, bør du måske tjekke denne her:
    http://www.scoreguide.dk/

For den dér scorereplik kommer du næppe langt med  ;D
Avatar billede jokkejensen Novice
20. maj 2010 - 17:33 #24
Lol - hah ja nok ikke verdens bedste scorereplik, men jeg håber heller ikke du sidder og føler jeg ligger an på dig :D
Avatar billede olebole Juniormester
20. maj 2010 - 21:14 #25
... slemme, slemme dreng!  *ROTFLMAO*

Rolig nu ... jeg kan bare ikke lade være med at returnere en høj serve  ;D
Avatar billede majbom Novice
20. maj 2010 - 21:21 #26
for satan, nu må i stoppe drenge, det lyder snart som en chat på et klamt datingsite :D
Avatar billede olebole Juniormester
20. maj 2010 - 21:28 #27
- og så er det såmænd bare en chat på et klamt kodesite  :D
Avatar billede jokkejensen Novice
20. maj 2010 - 21:28 #28
Nu kender jeg ikke til nogle klamme dating sites, og jeg har heller ikke fulgt med i hvad der sker på chatten (:

Virker bøgerne ole ? - eller er det noget du selv har skrevet og udgivet dig for at være en 20 studerende med lidt personlige issues ?

"jeg kan bare ikke lade være med at returnere en høj serve  ;D "

- no shit ? :)

/J
Avatar billede olebole Juniormester
20. maj 2010 - 21:50 #29
Med tre børn og snart fem børnebørn behøver jeg zq ikke læse bøger - og hvis vi skal tage højde for befolkningseksplosion og den slags, må jeg nok hellere holde mig fra at skrive bøger om at score  ;D
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