2013-01-03 12 views
12

ho bisogno di passare un valore nell'opzione selezionare per azione in cui ho agent_id =Come passare valore da <option><select> per formare azione

Qualcuno può aiutarmi?

<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

yuck. Qualche ragione per cui non puoi semplicemente usare un post invece di un get? – JohnFx

+0

È possibile farlo solo tramite HTML? –

+0

@JohnFx - Presumo che 'yuck' sia per' mixare sia POST che GET nella stessa query' che, sebbene strana, è consentita dalle specifiche HTML. Vedere la risposta di @Marko per un esempio del server che prevede questo comportamento. –

risposta

5

con 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

Sospetto che il nome select debba essere "agent_id", nel qual caso l'azione dovrebbe essere solo "index.php? Action = contact_agent' – climbage

+1

Non è necessario includere jQuery per fare una cosa così semplice ... :( – vdbuilder

+0

@vdbuilder tu –

16

Non è necessario utilizzare jQuery o Javascript.

Utilizzare il tag name della selezione e lasciare che il modulo faccia il suo lavoro.

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

Potresti fornire un esempio di questo codice? Non sono in grado di comprendere appieno la tua proposta.Grazie –

+1

questa sembra essere una buona risposta ma ci sono pochissime informazioni. Forse ci dovrebbe essere qualche contesto –

4

Come risposta @Shoaib, non è necessario alcun jQuery o Javascript. Puoi farlo semplicemente con puro 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. Rimuovere&agent_id= dall'azione forma dal momento che non ne hai bisogno c'è.
  2. Aggiunginame="agent_id" al select
  3. Opzionalmente add parola required non indicano che è necessaria questa selezione.

Dal momento che si sta utilizzando PHP, poi inviando il modulo per index.php si può prendere agent_id con $_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']; 

A conclusione per un compito così semplice non si dovrebbe usare qualsiasi javascript o jQuery. Per @FelipeAlvarez che risponde tuo commento

+0

Best risposta! Grazie per una spiegazione così dettagliata su cose semplici che a volte non conosciamo esattamente il comportamento. –

1

si può semplicemente utilizzare il proprio codice, ma aggiungere il nome per il tag select

<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> 

allora si può accedere in questo modo

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

invece di cercare di cattura le risposte POST e GET - puoi avere tutto ciò che vuoi nel POST.

tuo codice:

<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> 

può facilmente diventare:

<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> 

poi nell'indice.php - questi valori saranno popolati

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