Kom ihåg mig?
Home Menu

Menu


läsa av forms in forms?

Ämnesverktyg Visningsalternativ
Oläst 2009-09-28, 22:43 #1
studiox studiox är inte uppkopplad
Har WN som tidsfördriv
 
Reg.datum: Aug 2004
Inlägg: 1 356
studiox studiox är inte uppkopplad
Har WN som tidsfördriv
 
Reg.datum: Aug 2004
Inlägg: 1 356
Standard läsa av forms in forms?

Hej,

Jag har två forms. Jag vill att oavsett vilken man klickar på submit i ska värdena från båda läsas ut. Är det möjligt?

Tyvärr ligger det en tredje form "emellan" och jag kan alltså inte göra min form "större" för att inkludera dom två forms som jag vill ska bli en. Funderade på jquery men den tittar ju på öppnings och stängningstaggar också. Skulle jag kunna ha samma id istället? Går det att lösa på något annat sätt?
studiox är inte uppkopplad   Svara med citatSvara med citat
Oläst 2009-09-28, 23:04 #2
Johan_S Johan_S är inte uppkopplad
Medlem
 
Reg.datum: Aug 2006
Inlägg: 99
Johan_S Johan_S är inte uppkopplad
Medlem
 
Reg.datum: Aug 2006
Inlägg: 99
Du kan inte ha allt i samma form men endast välja att hantera vissa fält beroende på hur du anropar formen? Spånar bara lite nu, inget jag provat själv.
Johan_S är inte uppkopplad   Svara med citatSvara med citat
Oläst 2009-09-29, 07:33 #3
Althalos Althalos är inte uppkopplad
Medlem
 
Reg.datum: Jan 2006
Inlägg: 282
Althalos Althalos är inte uppkopplad
Medlem
 
Reg.datum: Jan 2006
Inlägg: 282
Johans lösning skulle förmodligen fungera, kanske. Det beror på vad du vill - men du skulle kunna göra det med Jquery också. t. ex. om du har fyra element i formulär 1 och fyra element i formulär 2 kan du lägga till gömda element i varje formulär också. Sedan interceptar du när användaren klickar på submit och överför värdena till dina gömda element:


$("#rightinputbutton").click(function(e) {
e.preventDefault();
$("#myhiddendiv").val($("#form1-element1").val()) etc.
$("#formbelongingtorightinputbutton").submit();
});

Men alltså Javascript är nog inte egentligen att rekommendera....
Althalos är inte uppkopplad   Svara med citatSvara med citat
Oläst 2009-09-29, 10:03 #4
Magnus_A Magnus_A är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: May 2006
Inlägg: 2 604
Magnus_A Magnus_A är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: May 2006
Inlägg: 2 604
Jag kan tänka mig tre olika sätt att lösa problemet:

Javascriptsbaserat:
Du förser de båda formulären med de andra fältets , dolda den här gången, och uppdaterar dem med javascript. På det viset överförs ett inskrivet eller valt fältvärde till det andra formuläret. Sen är det din uppgift att hantera värdena när de väl kommer in till ditt script!


Ett enda gigantiskt formulär som innehåller alla tre ursprungliga formulär men där responsen blir olika beroende på vilken submitknapp som använts. Kan bli lite problematiskt att tolka när folk bara trycker på enter.

Flytta om i formulären och slå ihop nummer ett och tre, men positionera formulär 2, det som ska ligga emellan, så att det ligger visuellt emellan dessa två. Om det nu var det du menade med emellan.
Magnus_A är inte uppkopplad   Svara med citatSvara med citat
Oläst 2009-09-29, 11:54 #5
Jonas Jonas är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Feb 2004
Inlägg: 3 364
Jonas Jonas är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Feb 2004
Inlägg: 3 364
Citat:
Ursprungligen postat av Althalos Visa inlägg
$("#rightinputbutton").click(function(e) {
e.preventDefault();
$("#myhiddendiv").val($("#form1-element1").val()) etc.
$("#formbelongingtorightinputbutton").submit();
});
Finns enklare lösning

Kod:
$("#rightinputbutton").click(function(e) {
  e.preventDefault();
 $("#myhiddenfield').val($("#form1-element1").serialize()) etc.
 $("#formbelongingtorightinputbutton").submit();
});
Serialize (länk till jQuery Docs) returnerar i formatet:
Citat:
single=Single&multiple=Multiple&multiple=Multiple3 &check=check2&radio=radio1
För att lösa detta i PHP så är det enkelt:

PHP-kod:
<?php
$val 
explode('&'$_POST['hiddenfield']);

foreach(
$val as $a)
{
list(
$name$value) = explode('='$a);
$values[$name] = $value;
}
?>
Inte helt skottsäkert, men det ger ett hum om hur det går att lösa.
Jonas är inte uppkopplad   Svara med citatSvara med citat
Oläst 2009-09-29, 17:33 #6
BjörnJ BjörnJ är inte uppkopplad
Mycket flitig postare
 
Reg.datum: May 2009
Inlägg: 971
BjörnJ BjörnJ är inte uppkopplad
Mycket flitig postare
 
Reg.datum: May 2009
Inlägg: 971
Om alla formulären kan ha samma målsida kan man istället ha ett formulär med flera submitknappar, och helt slippa javascript. All data kommer att postas oavsett vilken knapp man trycker på, men det går att avgöra vilken knapp det var.

Variant 3 och 4 fungerar inte som önskat i IE6, i övrigt fungerar det i en ganska ny Firefox och IE6. Jag har inte testat andra webbläsare.

PHP-kod:
<pre>
<?php
print_r
($_POST);
?>


Variant 1: input, samma namn
<form action="#" method="post">
Namn: <input type="text" name="name" />
<input type="submit" name="sub_but" value="Posta huvudformulär" />

Annat: <input type="text" name="annat" />
<input type="submit" name="sub_but" value="Gör något annat" />

Mer: <input type="text" name="mer" />
<input type="submit" name="sub_but" value="Posta huvudformulär" />
</form>


Variant 2: input, olika namn
<form action="#" method="post">
Namn: <input type="text" name="name" />
<input type="submit" name="sub_but1" value="Posta huvudformulär" />

Annat: <input type="text" name="annat" />
<input type="submit" name="sub_but2" value="Gör något annat" />

Mer: <input type="text" name="mer" />
<input type="submit" name="sub_but1" value="Posta huvudformulär" />
</form>


Variant 3: button, samma namn
<form action="#" method="post">
Namn: <input type="text" name="name" />
<button type="submit" name="sub_but" value="1">Posta huvudformulär</button>

Annat: <input type="text" name="annat" />
<button type="submit" name="sub_but" value="2">Gör något annat</button>

Mer: <input type="text" name="mer" />
<button type="submit" name="sub_but" value="1">Posta huvudformulär</button>
</form>


Variant 4: button, olika namn
<form action="#" method="post">
Namn: <input type="text" name="name" />
<button type="submit" name="sub_but1" value="1">Posta huvudformulär</button>

Annat: <input type="text" name="annat" />
<button type="submit" name="sub_but2" value="1">Gör något annat</button>

Mer: <input type="text" name="mer" />
<button type="submit" name="sub_but1" value="1">Posta huvudformulär</button>
</form>

</pre>
Jag skulle välja variant 2 och något i stil med:
PHP-kod:
if(isset($_POST['sub_but1'])) // Huvudformulär
{
    ...
}
else if(isset(
$_POST['sub_but2'])) // Mellanformulär
{
    ...

Problemet är att om man skulle posta genom att trycka på enter i "mellanformuläret" (om det nu finns något textfält där), så uppfattas det som om det är "huvudformuläret" som är postat.
BjörnJ är inte uppkopplad   Svara med citatSvara med citat
Svara


Aktiva användare som för närvarande tittar på det här ämnet: 1 (0 medlemmar och 1 gäster)
 

Regler för att posta
Du får inte posta nya ämnen
Du får inte posta svar
Du får inte posta bifogade filer
Du får inte redigera dina inlägg

BB-kod är
Smilies är
[IMG]-kod är
HTML-kod är av

Forumhopp


Alla tider är GMT +2. Klockan är nu 12:46.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson
 
Copyright © 2017