Necesito crear un formulario en un wordpress en el que se haya de relacionar cada opcion de un grupo A con otra de un grupo B, de manera que quede emparejada cada opción una unica vez, pero no se como hacerlo, ya que no encuentro ningun plugin que me permita hacerlo.
entre Desarrolladores
Recibe ayuda de expertos
Registrate y pregunta
Es gratis y fácil
Recibe respuestas
Respuestas, votos y comentarios
Vota y selecciona respuestas
Recibe puntos, vota y da la solución
Pregunta
Formulario para relacionar opciones de un grupo A con una de un grupo B
- preguntó
- Web
- 571 Vistas
- 1 Respuestas
- solucionada
1 Respuesta
Te pongo dos alternativas:
Una posibilidad es el elemento Sortable de jQuery UI. Permite crear elementos que se pueden arrastrar con el ratón para ser reordenados. Si te fijas en el ejemplo de connect list puedes hacer dos pilas de elementos para que el usuario las ordene dejando las del grupo A a un lado y las del B al otro.
Como este componente no resuelve directamente tu problemática desde JS deberías validar que el usuario no mezcla elementos de diferentes grupos en la misma columna. Una vez haya terminado la ordenación también tendrás que rescatar el resultado antes de que abandone la página (por ejemplo, con un botón guardar que llame a la función que hayas preparado para "leer" el resultado de la ordenación).
La pega de esta solución es tener que instalar todo el Framework jQuery UI sólo para utilizar este componente y que además te tocará pelearte con las validaciones.
Otro tipo de solución más artesanal es hacer un formulario HTML con tantos select como elementos A tengas. Al cargar la página los valores posibles de todos los select serán todos los elementos B.
Deberías hacer una validación con JS cada vez que el usuario cambia el valor seleccionado de uno de los desplegables y hacer que el resto actualizan sus posibles valores seleccionables. Con cada cambio se debería añadir la opción que quedó libre y quitar la elegida en el resto de desplegables.
Editado: añado un código de ejemplo para la segunda opción.
HTML:
<form action="" method="post" id="myForm">
<ul>
<li id="li_A1">
<label for="input_A1"> Elemento A1 </label>
<select id="input_A1" class="validar">
<option value=""></option>
<option value="Opcion B1">Opcion B1</option>
<option value="Opcion B2">Opcion B2</option>
<option value="Opcion B3">Opcion B3</option>
<option value="Opcion B4">Opcion B4</option>
</select>
</li>
<li id="li_A2">
<label for="input_A2"> Elemento A2 </label>
<select id="input_A2" class="validar">
<option value=""></option>
<option value="Opcion B1">Opcion B1</option>
<option value="Opcion B2">Opcion B2</option>
<option value="Opcion B3">Opcion B3</option>
<option value="Opcion B4">Opcion B4</option>
</select>
</li>
<li id="li_A3">
<label for="input_A3"> Elemento A3 </label>
<select id="input_A3" class="validar">
<option value=""></option>
<option value="Opcion B1">Opcion B1</option>
<option value="Opcion B2">Opcion B2</option>
<option value="Opcion B3">Opcion B3</option>
<option value="Opcion B4">Opcion B4</option>
</select>
</li>
<li id="li_A4">
<label for="input_A4"> Elemento A4 </label>
<select id="input_A4" class="validar">
<option value=""></option>
<option value="Opcion B1">Opcion B1</option>
<option value="Opcion B2">Opcion B2</option>
<option value="Opcion B3">Opcion B3</option>
<option value="Opcion B4">Opcion B4</option>
</select>
</li>
</ul>
</form>
Javascript:
$("select.validar").change(function() {
// Habilitar todo:
$("#myForm option").removeAttr('disabled');
// Deshabilitar los elegidos:
for (var id = 1; id <= 4; id++) {
valor = $("#input_A"+id).val();
if (valor != '') {
for (var j = 1; j <= 4; j++) {
if (j != id) {
$("#input_A"+j+" option[value='"+valor+"']").attr('disabled','disabled');
}
}
}
}
});
Ejemplo de funcionamiento: http://jsfiddle.net/y9QtK/3/
Por favor, accede o regístrate para añadir un comentario.
Por favor, accede o regístrate para responder a esta pregunta.
En el blog
-
- 689713
- 1
- Jul 5, 2015
Sin Respuesta
-
- 88
- 0
- Oct 18
-
- 167
- 0
- Jul 9
-
- 541
- 1
- Mar 19
-
- 416
- 2
- Feb 26
-
- 4794
- 0
- Nov 7, 2023
-
- 481
- 0
- Sep 19, 2023
-
- 465
- 0
- Ago 21, 2023
-
- 637
- 0
- May 14, 2023
- ver todas
Actividad Reciente
alyvrs preguntó Oct 19
Ayuda , necesito mostrar datos creados solo por el…ManHol preguntó Jul 9
pasar un archivo de excel a csv en pythonArtEze respondió Abr 24
Alguien sabe, no me ignorenArtEze seleccionó una respuesta Abr 24
Bajar extensión de Chrome sin actualizar el navega…ArtEze respondió Abr 24
Bajar extensión de Chrome sin actualizar el navega…ArtEze preguntó Abr 24
Bajar extensión de Chrome sin actualizar el navega…ArtEze respondió Abr 24
No me deja instalar OracleArtEze respondió Abr 24
Formulario que guarde los datos de un jsonArtEze comentó Abr 24
Script /boot/ scrapingSantiago2610 comentó Mar 23
Acualizar ChoiceField en django
Ultimas Preguntas
Usuarios Top
- Leonardo-Tadei
- 227320 Puntos
- Peter
- 150480 Puntos
- white
- 75880 Puntos
- carlossevi
- 63580 Puntos
- magarzon
- 30650 Puntos
- pregunton
- 20400 Puntos