web-dev-qa-db-fra.com

Comment passer la valeur de <option> <select> pour former une action

J'ai besoin de passer une valeur dans l'option select à l'action où j'ai agent_id =

Quelqu'un peut-il aider?

<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>
19
mr.data1

Vous n'avez pas besoin d'utiliser jQuery ou Javascript.

Utilisez la balise name de la sélection et laissez le formulaire faire son travail.

<select name="agent_id" id="agent_id">
27
Shoaib

Comme @Shoaib a répondu, vous n'avez pas besoin de jQuery ou Javascript. Vous pouvez le faire simplement avec du HTML pur!

<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. Supprimer&agent_id= depuis l'action du formulaire car vous n'en avez pas besoin.
  2. Ajoutername="agent_id" à la sélection
  3. Facultatif ajouter Word required indique que cette sélection est requise.

Puisque vous utilisez PHP, alors en publiant le formulaire sur index.php vous pouvez attraper agent_id avec $_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']; 

Pour conclure une tâche aussi simple, vous ne devez pas utiliser de javascript ou de jQuery. À @FelipeAlvarez qui répond à votre commentaire

10
mkungla

avec 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();
}
6
Mo Rostami

vous pouvez simplement utiliser votre propre code mais ajouter un nom pour la balise de sélection

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

alors vous pouvez y accéder comme ceci

String agent=request.getparameter("agent_id");
4
Birhan Nega

au lieu d'essayer d'attraper les deux POST et GET réponses - vous pouvez avoir tout ce que vous voulez dans le POST.

Votre code:

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

peut facilement devenir:

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

puis dans index.php - ces valeurs seront renseignées

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