Avatar billede mik28 Seniormester
10. januar 2012 - 16:19 Der er 31 kommentarer og
1 løsning

a href i en form

Hej Eksperter

Er det muligt at have
<a href="java script:this.submit()">Ladida</a>
i en form og få den til at submitte den form den er i uden at bruge getElementById?
Avatar billede pstidsen Novice
10. januar 2012 - 16:45 #1
Der er godt nok ikke frygtelig mange hits på: http://www.google.dk (...), men må indrømme at jeg ikke andet det!
Avatar billede olebole Juniormester
10. januar 2012 - 16:50 #2
<ole>

Såkaldte formkontroller - altså elementer som input, textarea, http://www.paapinden.dk/blog/2010/11/09/lidt-brystfikseret/o.lign. - er del af formens http://www.paapinden.dk/blog/2010/11/09/lidt-brystfikseret/collection. De kan alle referere til formen med this.form (ikke bare this, som du forsøger med).

Sådan kan ingen andre elementer referere - heller ikke et link. Her er du nødt til at give formen et id og så kalde noget i stil med:

<a href="#" onclick="document.getElementById('FORM_ID').submit()">

/mvh
</bole>
Avatar billede olebole Juniormester
10. januar 2012 - 16:55 #3
*LoL* Jeg har lige tippet min gravide niece om en skøn 'pathat', en anden E-bruger, jeg hjalp i går aftes, har lavet. Jeg kom vis til at taste Ctrl+V i stedet for Ctrl+B et par steder i indlægget #2  :D

Undskyld, men tjek endelig pathatten! Der skulle naturligvis have stået:

"Såkaldte formkontroller - altså elementer som input, textarea, select - er del af formens select. De kan alle referere til formen med this.form (ikke bare this, som du forsøger med)."  *D
Avatar billede olebole Juniormester
10. januar 2012 - 16:58 #4
- og jeg kan se, linket til pathatten i #2 blev blandet sammen med noget andet (Pokker tage E's URL-parser!), så her er det rigtige, hvis nogen er blevet nysgerrige  =)
Avatar billede mik28 Seniormester
16. januar 2012 - 13:56 #5
this.form virker ikke for mig. OOOOoooooo("Det kunne være jeg skulle lade være med at have <a> i en form").
Avatar billede olebole Juniormester
16. januar 2012 - 14:36 #6
"this.form virker ikke for mig" >> Nej, det er jo det, jeg skriver: Det virker ikke for nogen.

"Det kunne være jeg skulle lade være med at have <a> i en form" >> Hvorfor dog det? Der er intet somhelst i vejen for at bruge links i en form
Avatar billede mik28 Seniormester
16. januar 2012 - 14:48 #7
Så svaret på mit spørgsmål er altså nej, man kan ikke submitte den form et link ligger i uden at bruge document.getElementById
Avatar billede olebole Juniormester
16. januar 2012 - 15:06 #8
Det må på nuværende tidspunkt anses for værende slået fast  =)
Avatar billede mik28 Seniormester
23. januar 2012 - 10:26 #9
Gør

<a href="#" onclick="document.getElementById('FORM_ID').submit()">ladida</a>

ikke det samme som

<input type="submit" id="submit" name="submit" value="ladida">


Problemet er at jeg har et valideringscript som ikke bliver kaldt i det første tilfælde.

<form id="FORM_ID" action="whatever" method="POST" onsubmit="return validate(this);">
Avatar billede olebole Juniormester
23. januar 2012 - 12:49 #10
Nej, onsubmit handleren fyres ikke af, når formen submittes med JS
Avatar billede mik28 Seniormester
23. januar 2012 - 13:42 #11
hmmmm. Hvordan får jeg så valideret min form. Min onsubmit ser således ud.

onsubmit="document.charset='ISO-8859-1';return validate(this);"
Avatar billede olebole Juniormester
23. januar 2012 - 13:52 #12
Hvad er begrundelsen for document.charset='ISO-8859-1';?

onclick="var f=document.getElementById('myForm');if(validate(f))f.submit()"
Avatar billede mik28 Seniormester
24. januar 2012 - 09:45 #13
Det er noget med at det CMS jeg bruger ikke fatter andet :-)
Avatar billede olebole Juniormester
24. januar 2012 - 13:20 #14
Hvis den kode stammer fra CMS'et, kunne det tyde på, det ikke er professionelt skrevet
Avatar billede mik28 Seniormester
06. februar 2012 - 09:36 #15
Hvorfor kan jeg ikke følgende? 

<a href="java script:var f=document.getElementById('myForm');if(validatepresignupgen(f))f.submit();">Send</a>

Jeg får valideret det første felt og så bliver jeg sendt til linket. Kan godt gøre således,

onclick="var f=document.getElementById('myForm');if(validatepresignupgen(f))f.submit();

Det ville være bedre for mig hvis man kan gøre det første.
Avatar billede mik28 Seniormester
06. februar 2012 - 09:54 #16
Har også prøvet med

<a href="java script:void();var f=document.getElementById('myForm');if(validatepresignupgen(f))f.submit();">Send</a>
Avatar billede olebole Juniormester
06. februar 2012 - 14:36 #17
Nu skal man aldrig underkende folks fantasi i forhold til navngivning, men er du sikker på, din valideringsfunktion hedder validatepresignupgen?
Avatar billede olebole Juniormester
06. februar 2012 - 14:36 #18
- og hvis det er tilfældet, hvorfor i alverden er det så det?  :D
Avatar billede mik28 Seniormester
06. februar 2012 - 14:58 #19
Det gør den altså og det virker som sagt også fint med onclick :-)
Avatar billede mik28 Seniormester
06. februar 2012 - 15:01 #20
Skal have fundet ud af om det jeg gerne vil overhovedet kan lade sig gøre?
Avatar billede olebole Juniormester
06. februar 2012 - 15:02 #21
Det kan kun skyldes en anden fejl - eller noget, du ikke fortæller. Prøv at lægge et link til et eksempel
Avatar billede olebole Juniormester
06. februar 2012 - 15:03 #22
- og selvfølgelig kan det lade sig gøre. At du ændrer måden, der bliver kaldt på, berører jo ikke valideringsfunktionens indre virkemåde  =)
Avatar billede mik28 Seniormester
06. februar 2012 - 15:49 #23
Det ser således ud

<html>
<head>
<script type="text/javascript">
function validate(o){

    navn  = o.name.value;
    email  = o.emailAddress.value;
   
    if (navn.length<1){
        alert("Skriv dit navn");
        o.name.value="";
        o.name.focus();
        return false;
    }

    if (!email.match(/^[a-z0-9\-_\.]+@[a-z0-9\-_\.]+\.\w{2,4}$/i)) {
        alert("Skriv en e-mailadresse");
        o.emailAddress.value="";
      o.emailAddress.focus();
        return false;
    }
    return true;
}
</script>
</head>
<body>
<form id="myForm" action="/minurl" method="POST" enctype="ISO-8859-1" accept-charset="ISO-8859-1">   
<input value="" id="name" name="name">
<input value="" id="email" name="emailAddress">
<a href="#" onclick="document.charset='ISO-8859-1';var f=document.getElementById('myForm');if(validate(f))f.submit();">Send</a>
</form>
</body>
</html>
Avatar billede mik28 Seniormester
06. februar 2012 - 16:16 #24
<a href="java script:void(0);if(validate(document.getElementById('myForm')));document.getElementById('myForm').submit();">Send</a>

virker næsten. Formen bliver dog submittet når man trykker på knappen selv om felterne ikke er rigtigt udfyldt
Avatar billede mik28 Seniormester
06. februar 2012 - 16:19 #25
<a href="java script:void(0);if(validate(document.getElementById('myForm')))document.getElementById('myForm').submit();">Send</a>

Havde et ; for meget
Avatar billede olebole Juniormester
06. februar 2012 - 16:27 #26
1) void(0) giver ingen mening der. Det bør du slette.

2) Dit formtag bør se sådan ud:

<form id="myForm" action="/minurl" method="POST" enctype="application/x-www-form-urlencoded">

Din enctype giver ingen mening - og det gør din accept-charset attribut heller ikke. Den eksisterer slet ikke.

3) document.charset='ISO-8859-1' er der heller ingen grund til at bruge. Til gengæld mangler du en Content-Type meta:

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

- og så er det lang tid siden, man gik over til utf-8. iso-8859-1 er ikke ret anvendeligt i dag.
Avatar billede olebole Juniormester
06. februar 2012 - 16:42 #27
Kender du i øvrigt den gamle sketch (som også Linje3 har lavet en version af):

A: Hvem spiller bas?

B: Hvem

A: Nej, hvem spiller bas?

B: Hvem!

A: For fanden da, jeg spørger, hvem der spiller bas?

B: Ja, Hvem spiller bas!

A: Idiot! Så fortæl mig: Hvem spiller trommer?

B: Nej, han spiller jo bas!

A: For helvede! Hvad hedder ham der spiller trommer ...?!??!!!

B: Nåhhh ... han hedder Bent - og ham, der spiller bas, hedder Hvem

Hvem pokker kan dog også finde på at kalde sit barn for 'Hvem'? Det kan måske han, som også kan finde på at kalde en name attribute for name  *o)

Brug aldrig ord, der bruges til andet. Ellers ender du og JavaScript hurtigt i en diskussion som den ovenfor  =)
Avatar billede mik28 Seniormester
07. februar 2012 - 09:18 #28
Cool nok. Tak for hjælpen. Ligger du et svar ?
Avatar billede olebole Juniormester
07. februar 2012 - 16:30 #29
Ellers tak, jeg samler ikke point. Læg selv et svar og accepter det, så tråden lukkes  =)
Avatar billede mik28 Seniormester
02. marts 2012 - 15:02 #30
lukker
Avatar billede hoplaringen Nybegynder
17. april 2012 - 09:11 #31
Tak olebole, Lige hvad jeg manglede :-)

<i><ole>

Såkaldte formkontroller - altså elementer som input, textarea, http://www.paapinden.dk/ (...) - er del af formens http://www.paapinden.dk/ (...) De kan alle referere til formen med this.form (ikke bare this, som du forsøger med).

Sådan kan ingen andre elementer referere - heller ikke et link. Her er du nødt til at give formen et id og så kalde noget i stil med:

<a href="#" onclick="document.getElementById('FORM_ID').submit()">

/mvh
</bole></i>
Avatar billede olebole Juniormester
17. april 2012 - 15:00 #32
Selvtak  =)
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