2012-01-29 9 views
6
<form action="here.php" method="POST"> 
<input type="text" name="text"> 

<div id="one"> 
    <input type="hidden" name="aaa" value="one"> 
    <input type="submit" value="Send"> 
</div> 

<div id="two"> 
    <input type="hidden" name="aaa" value="two"> 
    <input type="submit" value="Send"> 
</div> 

</form> 

gdybym kliknąć Wyślij na jeden lub div div DWA mam zawsze w $ _ POST [ „aaa”] = „dwa”;Formularz z dwoma przycisk submit z inną wartością

Czy możliwe jest utworzenie jednego formularza z dwoma przesłanymi o różnych wartościach?

Jeśli kliknięciu na div przedłożyć chciałbym reveice $ _ POST [ 'aaa'] = 'jeden' i jeśli kliknięciu na div dwóch submit chciałbym otrzymać $ _ POST [ 'aaa'] = ' dwa ".

Jak mogę to zrobić?

Mogę użyć do tego PHP i jQuery.

EDIT: Nie chcę tworzyć dwie formy - Nie chcę pokazując dwa wiele razy <input type="text" name="text">

EDIT: Może zamiast przycisku można złożyć? ale jak?

+0

wystarczy utworzyć dwa formularze. – c69

Odpowiedz

11

Wydaje się, że to, co rzeczywiście chcesz zrobić, to mieć wartość w każdym z przycisków, patrz this, na przykład:

<form action="demo_form.asp" method="get"> 
    Choose your favorite subject: 
    <button name="subject" type="submit" value="fav_HTML">HTML</button> 
    <button name="subject" type="submit" value="fav_CSS">CSS</button> 
</form> 
+4

Zazwyczaj zaleca się umieszczenie odpowiedzi tutaj, zamiast tylko linku, na wypadek, gdyby link przestał działać (jak dla mnie teraz). –

4

należałoby dwie różne formy:

<div id="one"> 
    <form ...> 
     <input type="hidden" name="aaa" value="one"> 
     <input type="submit" value="Send"> 
    </form> 
</div> 

<div id="two"> 
    <form ...> 
     <input ...> 
     <input ...> 
    </form> 
</div> 

Standardową praktyką jest to, że kiedy dwa pola mają dokładnie taką samą name, aby używać tylko ostatnia wartość napotkany w formie i twierdzą, że.

PHP ma notację specjalną (name="aaa[]"), aby umożliwić przesyłanie wielu wartości o tej samej nazwie, ale to by ci nie pomogło, ponieważ przesyła WSZYSTKIE wartości aaa, a nie tylko najbliższe do przycisku przesyłania.


formularz HTML:

<form ...> 
<input type="text" name="textfield"> 

<div id="one"> 
    <input type="hidden" name="one_data" value="aaa" /> 
    <input type="submit" name="submit_one" value="Submit" /> 
</div> 

<div id="two"> 
    <input type="hidden" name="two_data" value="bbb" /> 
    <input type="submit" name="submit_two" value="Submit" /> 
</div> 
</form> 

server-side:

if (isset($_POST['submit_two'])) { 
    $data = $_POST['two_data']; 
} else if (isset($_POST['submit_one'])) { 
    $data = $_POST['one_data']; 
} else { 
    die("Invalid submission"); 
} 
+0

To jest OK, ale nie chcę pokazywać dwa razy na mojej stronie

+0

Możesz zawsze używać niektórych javascript do kopiowania wartości jednego pola wejściowego do innego ukrytego pola w obu formach, gdy to jest przesłane. Ale ponieważ twoja forma jest zbudowana właśnie teraz, nie ma na to żadnego sposobu.Są też INNE sztuczki, których możesz użyć, np. Podając unikatowe nazwy poszczególnych pól, i użyć tego faktu, aby wykryć, który przycisk przesyłania został kliknięty, a następnie uzyskać dostęp tylko do odpowiedniej wartości. –

+0

dziękuję, ale nie wiem jak mogę to zrobić –

3

Zamiast pokazywać dwa przedstawienia przycisku można wyświetlić listę radiową z dwóch opcji i jeden przycisk wysyłania.

3

Spróbuj tego:

w formacie HTML

<input id="PreviousButton" value="Previous" type="submit" /> 
    <input id="NextButton" value="Next" type="submit" /> 

    <input id="Button" name="btnSubmit" type="hidden" /> 

w jOuery-

 $("#PreviousButton").click(function() { 
      $("#Button").val("Previous"); 
     }); 

     $("#NextButton").click(function() { 
      $("#Button").val("Next"); 
     }); 

następnie można zobaczyć w formularzu wyniki - co zawiera "Przycisk".

Powiązane problemy