2013-01-03 9 views
12

trzeba przekazać wartość w opcji wybrać do działania, w których mam agent_id =Jak przekazać wartość od <option><select> tworząc działania

może ktoś pomóc?

<form method="POST" action="index.php?action=contact_agent&agent_id="> 
<select> 
<option value="1">Agent Homer</option> 
<option value="2">Agent Lenny</option> 
<option value="3">Agent Carl</option> 
</select> 
+1

fuj. Każdy powód, dla którego nie możesz po prostu użyć postu zamiast dostać? – JohnFx

+0

Czy można to zrobić tylko za pomocą HTML? –

+0

@JohnFx - Zakładam, że 'fuj' jest" mieszanie zarówno POST, jak i GET w tym samym zapytaniu ", co jest dziwne, ale jest dozwolone przez specyfikację HTML. Zobacz odpowiedź @Marko na przykład serwera oczekującego tego zachowania. –

Odpowiedz

5

z jQuery:
html:

<form method="POST" name="myform" action="index.php?action=contact_agent&agent_id=" onsubmit="SetData()"> 
    <select name="agent" id="agent"> 
    <option value="1">Agent Homer</option> 
    <option value="2">Agent Lenny</option> 
    <option value="3">Agent Carl</option> 
    </select> 
</form> 

jQuery:

$('form').submit(function(){ 
    $(this).attr('action',$(this).attr('action')+$('#agent').val()); 
    $(this).submit(); 
}); 

javascript:

function SetData(){ 
    var select = document.getElementById('agent'); 
    var agent_id = select.options[select.selectedIndex].value; 
    document.myform.action = "index.php?action=contact_agent&agent_id="+agent_id ; # or .getAttribute('action') 
    myform.submit(); 
} 
+0

Podejrzewam, że wybrana nazwa powinna być "agent_id", w którym to przypadku akcją powinno być po prostu 'index.php? Action = contact_agent' – climbage

+1

Nie ma potrzeby dodawania jQuery do tak prostej rzeczy ... :( – vdbuilder

+0

@vdbuilder you masz rację: –

16

Nie trzeba używać jQuery lub JavaScript.

Użyj znacznika name wybranego i pozwól, aby formularz wykonał zadanie.

<select name="agent_id" id="agent_id"> 
+4

Czy możesz podać przykład kodu? Nie jestem w stanie w pełni zrozumieć Twojej propozycji.Dzięki . –

+1

to wydaje się być dobrą odpowiedzią, ale jest bardzo mało informacji.Być może powinien być jakiś kontekst –

4

Podobnie jak odpowiedź @Shoaib, nie potrzebujesz żadnego jQuery ani Javascriptu. Możesz to zrobić po prostu czystym html!

<form method="POST" action="index.php?action=contact_agent"> 
    <select name="agent_id" required> 
    <option value="1">Agent Homer</option> 
    <option value="2">Agent Lenny</option> 
    <option value="3">Agent Carl</option> 
    </select> 
    <input type="submit" value="Submit"> 
</form> 
  1. Usuń&agent_id= od formy działania, ponieważ nie trzeba go tam.
  2. Dodajname="agent_id" do select
  3. Opcjonalnie dodaj słowo required wskazują, że wymagane jest to wybór.

Ponieważ używasz PHP, następnie zamieszczając formularz do index.php można złapać agent_id z $_POST

/** Since you reference action on `form action` then value of $_GET['action'] will be contact_agent */ 
$action = $_GET['action']; 

/** Value of $_POST['agent_id'] will be selected option value */ 
$agent_id = $_POST['agent_id']; 

Jak zawarcia takiego prostego zadania nie należy używać dowolnego javascript lub jQuery. Aby @FelipeAlvarez że odpowiedzi komentarz

+0

Best Odpowiedź! Dziękujemy za tak szczegółowe wyjaśnienie prostych rzeczy, które czasami nie są dokładnie znane. –

1

można po prostu użyć własnego kodu, ale dodać nazwę dla wybranej zmiennej

<form method="POST" action="index.php?action=contact_agent&agent_id="> 
    <select name="agent_id"> 
     <option value="1">Agent Homer</option> 
     <option value="2">Agent Lenny</option> 
     <option value="3">Agent Carl</option> 
    </select> 

następnie można go jak ten

String agent=request.getparameter("agent_id"); 
2

zamiast próbować złap obie odpowiedzi POST i GET - możesz mieć wszystko, co chcesz w POST.

Kod:

<form method="POST" action="index.php?action=contact_agent&agent_id="> 
    <select> 
    <option value="1">Agent Homer</option> 
    <option value="2">Agent Lenny</option> 
    <option value="3">Agent Carl</option> 
    </select> 
</form> 

może łatwo stać:

<form method="POST" action="index.php"> 
    <input type="hidden" name="action" value="contact_agent"> 
    <select name="agent_id"> 
    <option value="1">Agent Homer</option> 
    <option value="2">Agent Lenny</option> 
    <option value="3">Agent Carl</option> 
    </select> 
</form> 

następnie w indeksie.php - te wartości będą zawierać

$_POST['action'] // "contact_agent" 
$_POST['agent_id'] // 1, 2 or 3 based on selection in form... 
Powiązane problemy