Avatar billede ofirpeter Nybegynder
21. august 2006 - 13:54 Der er 38 kommentarer og
1 løsning

Brug tekst som submit knap

Hvordan får jeg følgende tekst til at reagere ligesom submitknappen:

<a href='#'>Send</a>

<input type='submit' name='send' value='Send'>

"kalder" knappen med:

if(isset($_REQUEST["send"])){
...
}
Avatar billede fennec Nybegynder
21. august 2006 - 14:00 #1
<a href='#' onclick="document.DinFormsNavn.submit();">Send</a>
Avatar billede fennec Nybegynder
21. august 2006 - 14:05 #2
Du skal være opmærksom på at en evt onSubmit på dit form element IKKE bliver kørt når man bruger submit() metoden. F.eks vil validateFields() ikke blive kørt i dette tilfælde:
<form name="formNavn" onSubmit="return validateFields()">
<a href='#' onclick="document.formNavn.submit();">Send</a>

Den bliver kun kørt via en submit knap, så bruger du submit() skal du selv sørge for at køre de funktioner. F.eks sådan:
<a href='#' onclick="if(validateFields())document.formNavn.submit();">Send</a>
Avatar billede ofirpeter Nybegynder
21. august 2006 - 14:06 #3
Tak, er det muligt at give den et navn, så jeg kan have flere submit "knapper"?

Kom til at tænke om jeg jeg kan lave den sådan så den fungerer som en <option> i en select?
Avatar billede fennec Nybegynder
21. august 2006 - 14:31 #4
Du kan have alle de knapper/links/andet du vil. Form elementet har indbygget en submit() funktion, så det er bare den der skal kaldes, og det kan gøres på 1000 forskellige måder. Det er altså bare at kalde:
document.formNavn.submit()

Hvordan du kalder den er helt op til dig selv. Onclick eventen er nok den mest brugte:
<a href='#' onclick="document.DinFormsNavn.submit();">Send</a>
<input type="button" value="klik" onClick="document.DinFormsNavn.submit();">
<img src="billed.gif" onClick="document.DinFormsNavn.submit();">

Det er lidt mere indviklet via en dropdown/option. Hvad havde du forstillet dig der skulle ske når man valgte en option her i??
Avatar billede ofirpeter Nybegynder
21. august 2006 - 15:12 #5
Pprøver lige at stille det op på en lidt anden måde :)

Jeg ønsker to links

<a>Link1</a>
<a>Link2</a>

Jeg vil så gerne når en af disse klikkes kører php scriptet:

if(isset(???)){
echo "Du har valg ???";
}

Er dette muligt?
Avatar billede mclemens Nybegynder
21. august 2006 - 15:25 #6
Eksempel:




<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="content-type" content="text/html; charset=iso-8859-1"><title>Ingen titel</title>

<script type="text/javascript">
function fval(v){
  document.formularnavn.send.value=v;
  document.formularnavn.submit();
}
</script>

</head><body>
<form name="formularnavn" method="get" action="#" onsubmit="return false;">
<input type="hidden" name="send">
</form>

<a href="#123" onclick="fval('knap1');return false;">knap1</a>
<a href="#123" onclick="fval('knap2');return false;">knap2</a>
</body></html>
Avatar billede fennec Nybegynder
21. august 2006 - 15:26 #7
Skal du have nogle form data med??

Ellers er det bare at sende variabler med på linket:
<a href="dinSide.php?mode=link1">link 1</a>
<a href="dinSide.php?mode=link2">link 2</a>

if($_GET["mode"]=='link1')
{
}
if($_GET["mode"]=='link2')
{
}
Avatar billede ofirpeter Nybegynder
21. august 2006 - 15:29 #8
Hvad er forskellen fra det og blot lave et link der hedder side.php?send=1 osv. ?
Avatar billede ofirpeter Nybegynder
21. august 2006 - 15:29 #9
Jeg ville nemlig gerne have form data med.
Avatar billede mclemens Nybegynder
21. august 2006 - 15:30 #10
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="content-type" content="text/html; charset=iso-8859-1"><title>Ingen titel</title>

<script type="text/javascript">
function fval(v){
  f=document.formularnavn;
  f..send.value=v;f.submit();
  return false;
}
</script>

</head><body>
<form name="formularnavn" method="get" action="#" onsubmit="return false;">
<input type="hidden" name="send">
<input type="text" name="formdata1">
</form>

<a href="#123" onclick="return fval('knap1');">knap1</a>
<a href="#123" onclick="return fval('knap2');">knap2</a>
</body></html>
Avatar billede mclemens Nybegynder
21. august 2006 - 15:30 #11
^ - Ret evt. til post
Avatar billede mclemens Nybegynder
21. august 2006 - 15:33 #12
onsubmit="return false;" fordi at man skal bruge den ene eller
den anden knap til submit... og ikke submit ved tryk på return...
Avatar billede fennec Nybegynder
21. august 2006 - 15:34 #13
Ikke meget. Du kan lave en funktion som sætter linket i formen:

function send(mode)
{
  objForm = document.FormNavn;
  objForm.action = "denneside.php?mode="+ mode;
  objForm.submit();
}

<a href="#" onClick="send('link1')">link 1</a>
<a href="#" onClick="send('link2')">link 2</a>

(kræver at formen sendes som method="post")
Avatar billede mclemens Nybegynder
21. august 2006 - 15:34 #14
f..send.value=v;f.submit();
skal nok være:
f.send.value=v;f.submit();
Avatar billede ofirpeter Nybegynder
21. august 2006 - 16:01 #15
Smart. Sidste spørgsmål, så skal jeg nok lade jer være :)

Hvorledes gør jeg når jeg ved min input type hedder "navn", og gerne vil have urlen til at være send.php?nv=textiform.
Avatar billede mclemens Nybegynder
21. august 2006 - 16:16 #16
Ikke helt sikker på at jeg forstod den sidste del ... regner med at du mener at url'en skal se ud som send.php?nv=textiform og så skal den have andre formdataer med som post... I det tilfælde så gør du som fennec viser (21/08-2006 15:34:38)...


<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="content-type" content="text/html; charset=iso-8859-1"><title>Ingen titel</title>

<script type="text/javascript">
function fval(v){
  f=document.formularnavn;
  f.action="denneside.php?nv="+v;f.submit();
  return false;
}
</script>

</head><body>
<form name="formularnavn" method="post" action="#" onsubmit="return false;">
<input type="text" name="formdata1">
</form>

<a href="#123" onclick="return fval('knap1');">knap1</a>
<a href="#123" onclick="return fval('knap2');">knap2</a>
</body></html>



... det skjulte input felt er så ikke nødvendigt ...
men er det evt. noget andet du tænkte på ... ?
Avatar billede roenving Novice
21. august 2006 - 16:33 #17
<style type="text/css">
.submitText{
  background: none;
  margin:0;
  padding:0;
  border:0;
  line-height: 1em;
  font: inherit;
}
</style>

<form>
  <input type="text" value="Skriv noget"><br>
  <input type="submit" class="submitText" value="Sendknap 1"><br>
  <input type="submit" class="submitText" value="Sendknap 1"><br>
</form>
Avatar billede roenving Novice
21. august 2006 - 16:36 #18
Hrm, måske:

<style type="text/css">
.submitText{
  background: none;
  margin:0;
  padding:0;
  margin-left: -1em;
  border:0;
  line-height: 1em;
  font: inherit;
}
</style>

<form>
  <input type="text" value="Skriv noget"><br>
  <input type="submit" class="submitText" value="Sendknap 1"><br>
  <input type="submit" class="submitText" value="Sendknap 2"><br>
</form>

(kun kigget på i IE !-)
Avatar billede fennec Nybegynder
21. august 2006 - 16:36 #19
Vi kunne evt også slå helt over i GET metoden i stedet. Så bliver alle formfelter smidt på url'en:

<form method="GET" action="denneSide.php">
<input type="text" name="navn"><br>
<input type="text" name="adr"><br>
<input type="submit" value="send">
</form>

Dette vil sende en url:
DenneSide.php?navn=xxx&adr=xxx

Men det ved jeg ikke om du er intreseret i??
Avatar billede mclemens Nybegynder
21. august 2006 - 16:57 #20
P.s.: Grunden til at jeg ikke bruger input button's med name til
submit er at jeg gerne vil bruge onsubmit="return false;"
for at undgå at folk står i et felt og trykker på enter...
(blot for at forklare hvorfor jeg går over åen efter vand)
Avatar billede ofirpeter Nybegynder
22. august 2006 - 08:16 #21
Jeg synes mclemens (21/08-2006 16:16:32) er den løsning der mest ligner hvad jeg har tænkt mig :) Nu skal jeg bare lige lære at få x antal input felter på, så jeg selv kan tilføje noget ala: "pr+"=(inputboxen-pris)".

Jeg skal altså lære hvordan jeg henter value fra en bestemt input box :)
Avatar billede mclemens Nybegynder
22. august 2006 - 08:59 #22
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="content-type" content="text/html; charset=iso-8859-1"><title>Ingen titel</title>

<script type="text/javascript">
function fval(v){
  f=document.formularnavn;
  f.action="denneside.php?nv="+v;f.submit();
  return false;
}
</script>

</head><body>
<form name="formularnavn" method="post" action="#" onsubmit="return false;">
<input type="text" name="pr" value="inputboxen-pris">
<input type="text" name="pr2" value="inputboxen-pris">
<input type="text" name="pr3" value="inputboxen-pris">
</form>

<a href="#123" onclick="return fval('knap1');">knap1</a>
<a href="#123" onclick="return fval('knap2');">knap2</a>
</body></html>









eller (15:30:43) med det hele postet som get...



<script type="text/javascript">
function fval(v){
  f=document.formularnavn;
  f..send.value=v;f.submit();
  return false;
}
</script>

</head><body>
<form name="formularnavn" method="get" action="#" onsubmit="return false;">
<input type="hidden" name="send">
<input type="text" name="pr" value="inputboxen-pris">
<input type="text" name="pr2" value="inputboxen-pris">
<input type="text" name="pr3" value="inputboxen-pris">
</form>

<a href="#123" onclick="return fval('knap1');">knap1</a>
<a href="#123" onclick="return fval('knap2');">knap2</a>
</body></html>



Eller tænker du på postet som post med værdien af et felt tilføjet til url også ? ... hvis det er tilfældet - så: hvorfor det? Du kan jo hive post eller get værdier ud med $_GET eller $_POST ... I det tilfælde at det skulle tilfældet at det blot var for at få input's over ville jeg nok overveje 15:30:43 med method post ...

men 21/08-2006 16:16:32 kan selvfølgelig også udvides så den får at vide at den skal hive værdien fra et / flere input felter op til action feltet og så poste formularen ... men stadig det virker p.t. lidt skævt da jeg ikke ser ideen...


... men ideen er måske at du vil have to links der peger over på <a href="etellerandet.php?nv=knap1&pr1=prisfrainput1&pr2=prisfrainput2...o.s.v. ? De to andre forslag afsender formularen og hvis du vælger get som i 21/08-2006 15:30:43 får du ikke den advarsel frem som man får ved at gå frem og tilbage efter en post formular - sagt på en anden måde jeg tror at 15:30:43 burde kunne det du ønsker ... eller lægger der er der en årsag til at du skal have nogle variabler som get mens andre skal være post? ((15:30 kan jo også skiftes til post og så kan serverside valideringen ske på $_POST istedet for $_GET hvis det er tilfældet?))
Avatar billede ofirpeter Nybegynder
22. august 2006 - 09:04 #23
Problemet er bare at jeg har en at jeg gerne vil have url'en til at se således ud:

?pr=23324&tx=djjd

Imens navnene på inputboxene er "pris" og "text" <- og det har jeg så mine grunde til ikke er ændre på :) Da det er en lille tilføjelse til en stor side.
Avatar billede ofirpeter Nybegynder
22. august 2006 - 09:08 #24
Hmm, værdierne kan jeg jo bare tilføje nye variabler efter at have hentet dem. Så jeg kan faktisk godt bruge dette:

<script type="text/javascript">
function fval(v){
  f=document.formularnavn;
  f.send.value=v;f.submit();
  return false;
}
</script>

</head><body>
<form name="formularnavn" method="get" action="#" onsubmit="return false;">
<input type="hidden" name="send">
<input type="text" name="pr" value="inputboxen-pris">
<input type="text" name="pr2" value="inputboxen-pris">
<input type="text" name="pr3" value="inputboxen-pris">
</form>

<a href="#123" onclick="return fval('knap1');">knap1</a>
<a href="#123" onclick="return fval('knap2');">knap2</a>
</body></html>
Avatar billede ofirpeter Nybegynder
22. august 2006 - 09:13 #25
Hvordan får jeg siden til at gå til at gå til nyside.php?pr=hhdeh&"osv..." i stedet for at blive på samme side.
Avatar billede mclemens Nybegynder
22. august 2006 - 09:19 #26
action="#" -> action="nyside.php"
Avatar billede ofirpeter Nybegynder
22. august 2006 - 09:34 #27
Smart :) Nu er jeg jo løbet ind i endnu et problem. Den form som jeg skal hente data fra, den skal også kunne postes med "post" og en submitknap hvor php henter dataerne med $_request[]
Avatar billede ofirpeter Nybegynder
22. august 2006 - 09:50 #28
Jeg forstår ikke hvorfor det ikke kan laves mere simpelt.

Kan der ikke laves et javascript som der når man klikker på submit (tekst) under følgende form:
<form>
<input type='text' name='nr1'>
<input type='text' name='nr1'>
</form>

<a>Submit</a>

Så sendere brugeren videre til: side.php?felt1=nr1text&felt2=nr2text
Avatar billede fennec Nybegynder
22. august 2006 - 10:01 #29
<form name="myForm" method="get" action="side.php">
<input type="Text" name="felt1" value="">
<input type="Text" name="felt2" value="">
<input type="Text" name="felt3" value="">
<a href="#" onclick="document.myForm.submit()">submit</a>
</form>
Avatar billede mclemens Nybegynder
22. august 2006 - 10:11 #30
1.html test...



<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="content-type" content="text/html; charset=iso-8859-1"><title>Ingen titel</title>

<script type="text/javascript">
function thref(t,a){
  f=document.formularnavn;
  tmptxt="";
  for(i=0;i<a.length;i++){
    tmptxt+=a[i]+"="+f[a[i]].value
    if(i<a.length-1)tmptxt+="&";
  }
  t.href+=tmptxt;
}
</script>

</head><body>
<form name="formularnavn">
<input type='text' name='nr1'>
<input type='text' name='nr2'>
</form>

<a href="1.html?" onclick="thref(this,['nr1','nr2']);">Submit</a>
<a href="1.html?" onclick="thref(this,['nr1','nr2']);">Submit</a>

<br><br><br>

<a href="1.html?knap=1&" onclick="thref(this,['nr1','nr2']);">Submit</a>
<a href="1.html?knap=2&" onclick="thref(this,['nr1','nr2']);">Submit</a>

</body></html>
Avatar billede mclemens Nybegynder
22. august 2006 - 10:18 #31
og side.php test med 22/08-2006 09:34:30




<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="content-type" content="text/html; charset=iso-8859-1"><title>Ingen titel</title>

<script type="text/javascript">
function thref(t,a){
  f=document.formularnavn;
  tmptxt="";
  for(i=0;i<a.length;i++){
    tmptxt+=a[i]+"="+f[a[i]].value
    if(i<a.length-1)tmptxt+="&";
  }
  t.href+=tmptxt;
}
</script>

</head><body>
<form name="formularnavn" method="post" action="side.php">
<input type='text' name='nr1'><br>
<input type='text' name='nr2'><br>
<input type='submit' value='ok'><br>
</form>

<a href="side.php?" onclick="thref(this,['nr1','nr2']);">Submit</a>
<a href="side.php?" onclick="thref(this,['nr1','nr2']);">Submit</a>

<br><br><br>

<a href="side.php?knap=1&" onclick="thref(this,['nr1','nr2']);">Submit</a>
<a href="side.php?knap=2&" onclick="thref(this,['nr1','nr2']);">Submit</a>

</body></html>
Avatar billede ofirpeter Nybegynder
22. august 2006 - 14:59 #32
Altså, det virker virkelig godt. Men det kan stadig ikke det jeg gerne vil have. (så vidt jeg kan finde ud af)

Skal det der kommer op i urlen f.eks. "nr1" absolut være det samme som inputfeltet hedder?

Kan jeg ikke få den til at hedde:

side.php?FELT1 = "værdien af input feltet der hedder nr1" & FELT2 = "værdien af input feltet der hedder nr2"  ??
Avatar billede mclemens Nybegynder
22. august 2006 - 15:09 #33
Hvad med at den snupper det automatisk fra rel hvis rel på input feltet med det name man søger har rel defineret ? (hvis rel ikke er defineret bruges name som feltet i forvejen har) ... Eller vil du hellere definere det manuelt? (er tilbage iaften)




<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="content-type" content="text/html; charset=iso-8859-1"><title>Ingen titel</title>

<script type="text/javascript">
function thref(t,a){
  f=document.formularnavn;
  tmptxt="";
  for(i=0;i<a.length;i++){
    tmptxt+=(f[a[i]].rel)?f[a[i]].rel+"="+f[a[i]].value:a[i]+"="+f[a[i]];
    if(i<a.length-1)tmptxt+="&";
  }
  t.href+=tmptxt;
}
</script>

</head><body>
<form name="formularnavn" method="post" action="side.php">
<input type='text' name='nr1' rel="felt1"><br>
<input type='text' name='nr2' rel="felt2"><br>
<input type='submit' value='ok'><br>
</form>

<a href="side.php?" onclick="thref(this,['nr1','nr2']);">Submit</a>
<a href="side.php?" onclick="thref(this,['nr1','nr2']);">Submit</a>

<br><br><br>

<a href="side.php?knap=1&" onclick="thref(this,['nr1','nr2']);">Submit</a>
<a href="side.php?knap=2&" onclick="thref(this,['nr1','nr2']);">Submit</a>

</body></html>
Avatar billede fennec Nybegynder
22. august 2006 - 15:15 #34
Er det da så vigtigt at felterne hedder nr1, nr2 i formen, og felt1, felt2 når data sendes?? Du kan jo altid kalde formfelterne felt1, felt2 hvis det er supervigtigt at det er det der kommer på url'en...

Synes desuden det gør det meget indviklet fra et programmerings synspunkt, at men ikke ved hvilke data, der kommer fra hvilke input felter. Derfor vil jeg klart anbefale at du bibeholder formnavne, når du submitter.
Avatar billede ofirpeter Nybegynder
25. august 2006 - 09:23 #35
Mclemens, jeg endte med at bruge din løsning med rel =xx, det er lige hvad jeg manglede. Svar gerne.
Avatar billede mclemens Nybegynder
25. august 2006 - 09:27 #36
OK, kommer her :)
Avatar billede mclemens Nybegynder
25. august 2006 - 09:29 #37
Arg, rykker snart den caps-lock af
(rigtig dumt sted den sidder) OK -> Ok
Avatar billede ofirpeter Nybegynder
25. august 2006 - 09:58 #38
Hehe :) Tak for hjælpen. Hvis jeg må tillade at headhunte dig, må du godt kigge fordi her http://www.eksperten.dk/spm/728292 , jeg ved du har nogen evner :)
Avatar billede mclemens Nybegynder
25. august 2006 - 11:32 #39
Tak for point, kigger på det iaften - hvis der ikke er andre der har svaret inden...
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