Tengo este tipo de menú desplegable de selección múltiple que quiero agregar a mi formulario

<form>
...
    <select id="example2" multiple="multiple">
        <div id="otherChoices">
            <optgroup label="Academic" class="blah">
                <option value="Engineering" class="blah">Engineering</option>
                <option value="Humanities">Humanities</option>
                <option value="Life_Sciences">Life Sciences</option>
                <option value="Social Sciences_Sciences">Social Sciences</option>
            </optgroup>
            <optgroup label="Clubs">
                <option value="Event">Event </option>
                <option value="Meeting">Meeting</option>
                <option value="Performance">Performance</option>
            </optgroup>
            <optgroup label="Personal">
                <option value="Discussion">Discussion</option>
                <option value="Event">Event</option>
                <option value="Food">Food</option>
                <option value="Hangout">Hangout</option>
                <option value="Trip">Trip</option>
            </optgroup>
        </div>
    </select>
</form>

Pero no estoy seguro de qué tipo de formulario de entrada es este (es un formulario creado por bootstrap pero no de un tipo de entrada válido), así que no estoy seguro exactamente cómo enviar los parámetros a través de una solicitud posterior. Actualmente, estoy usando jquery para tomar los valores seleccionados y completar un formulario oculto. ¿Hay una mejor manera de esto?

0
user3340037 3 sep. 2014 a las 01:27

2 respuestas

La mejor respuesta

Cometiste algunos errores en tu HTML: esta es la versión corregida:

<form action="test2.php" method="post">
    <select name="example2[]" id="example2" multiple="multiple" >
        <div id="otherChoices" name="hello">
            <optgroup label="Academic" class="blah">
                <option value="Engineering" class="blah">Engineering</option>
                <option value="Humanities">Humanities</option>
                <option value="Life_Sciences">Life Sciences</option>
                <option value="Social Sciences_Sciences">Social Sciences</option>
            </optgroup>
            <optgroup label="Clubs">
                <option value="Event">Event </option>
                <option value="Meeting">Meeting</option>
                <option value="Performance">Performance</option>
            </optgroup>
            <optgroup label="Personal">
                <option value="Discussion">Discussion</option>
                <option value="Event">Event</option>
                <option value="Food">Food</option>
                <option value="Hangout">Hangout</option>
                <option value="Trip">Trip</option>
            </optgroup>
        </div>
    </select>
    <button type="submit">Submit</button>
</form>

EDITAR: Esto es lo que corregí:

  1. Agregué un valor de nombre a la selección con corchetes para mostrar que es una matriz
  2. Agregué un tipo de método al formulario: method = "post"
  3. Botón de enviar

Luego puede acceder a los elementos individuales de esta manera:

echo $_POST["example2"][0];

EDITAR: Lo siento, me di cuenta de que este es Node.js Ese era para PHP. Vea este enlace para obtener la variable de publicación en el nodo js:

¿Cómo se extraen los datos POST en Node.js?

1
Community 23 may. 2017 a las 10:33

Cuando envía un formulario, pasa una matriz a la página siguiente, especificada en el atributo action del formulario. Si uno no está configurado, se enviará a la URL actual.

Por defecto, los formularios se enviarán utilizando GET a menos que establezca el atributo method en post.

Por lo tanto, cambie su etiqueta <form> a lo siguiente:

<form method="post" action="test.php">

Y dele a su select un name, como name="test_select".

Y luego tu test.php puede verse así:

<?php
  print_r($_POST);

(sin necesidad de una etiqueta de cierre ?>)

Esto imprimirá la matriz $_POST y verá cómo funcionan las selecciones múltiples.

0
rybo111 2 sep. 2014 a las 21:33