Foros del Web » Programando para Internet » PHP »

problema al recoger datos de un select multiple modificado con javascript

Estas en el tema de problema al recoger datos de un select multiple modificado con javascript en el foro de PHP en Foros del Web. Buenas Primero he decir que no se, si mi duda iria aqui o en el foro de javascript, si es asi ruego que me lo ...
  #1 (permalink)  
Antiguo 26/09/2010, 11:16
 
Fecha de Ingreso: diciembre-2009
Mensajes: 51
Antigüedad: 14 años, 4 meses
Puntos: 1
problema al recoger datos de un select multiple modificado con javascript

Buenas

Primero he decir que no se, si mi duda iria aqui o en el foro de javascript, si es asi ruego que me lo digan.

tengo un select multiple que se va rellenando desde un select, esto funciona en java.

Código HTML:
<html>
<head>
<title>Selecciona elementos en lista 2</title>

</head>

<BODY style="font-family: Verdana">
<p align="center"><b>Selecciona elementos en lista 2</b></p>

<SCRIPT LANGUAGE="JavaScript">
<!-- Original:  Kathi O'Shea (Kathi.O'[email protected]) -->
<!-- Web Site:  http://www.web-savant.com/users/kathi/asp -->


<!-- Begin
function moveOver()  
{
var boxLength = document.choiceForm.choiceBox.length;
var selectedItem = document.choiceForm.available.selectedIndex;
var selectedText = document.choiceForm.available.options[selectedItem].text;
var selectedValue = document.choiceForm.available.options[selectedItem].value;
var i;
var isNew = true;
if (boxLength != 0) {
for (i = 0; i < boxLength; i++) {
thisitem = document.choiceForm.choiceBox.options[i].text;
if (thisitem == selectedText) {
isNew = false;
break;
      }
   }
} 
if (isNew) {
newoption = new Option(selectedText, selectedValue, false, false);
document.choiceForm.choiceBox.options[boxLength] = newoption;
}
document.choiceForm.available.selectedIndex=-1;
}
function removeMe() {
var boxLength = document.choiceForm.choiceBox.length;
arrSelected = new Array();
var count = 0;
for (i = 0; i < boxLength; i++) {
if (document.choiceForm.choiceBox.options[i].selected) {
arrSelected[count] = document.choiceForm.choiceBox.options[i].value;
}
count++;
}
var x;
for (i = 0; i < boxLength; i++) {
for (x = 0; x < arrSelected.length; x++) {
if (document.choiceForm.choiceBox.options[i].value == arrSelected[x]) {
document.choiceForm.choiceBox.options[i] = null;
   }
}
boxLength = document.choiceForm.choiceBox.length;
   }
}
function saveMe() {
var strValues = "";
var boxLength = document.choiceForm.choiceBox.length;
var count = 0;
if (boxLength != 0) {
for (i = 0; i < boxLength; i++) {
if (count == 0) {
strValues = document.choiceForm.choiceBox.options[i].value;
}
else {
strValues = strValues + "," + document.choiceForm.choiceBox.options[i].value;
}
count++;
   }
}
if (strValues.length == 0) {
alert("No has hecho ninguna selección");
}
else {
alert("Aquí están los valores seleccionados:\r\n" + strValues);
   }
}
//  End -->
</script>
</HEAD>

<html>
<head>

<title>Selección de elementos</title>

</head>


<BODY style="font-family: Verdana">

<center>
<form name="choiceForm">
<table border=0 width="414">
<tr>
<td valign="top" width=227>
<font size="2">Contenido disponible: </font>
<br>
<select name="available" size=10 onchange="moveOver();">

<option value=1>Noticias de la compañía
<option value=2>Noticias de industria
<option value=3>Actualizaciones de productos
<option value=4>Especificaciones de productos
<option value=5>Historia de pedidos
<option value=6>Estado del pedido
<option value=7>Contactos
<option value=8>Calendario de eventos
<option value=9>Planificación
<option value=10>Notas
</select>
</td>
<td valign="top" width="177">
<font size="2">Tu selección: </font>
<br>
<select multiple name="choiceBox" style="width:150;" size="10">

</select>
</td>
</tr>
<tr>
<td colspan=2 height=10 width="390">
<input type="button" value="Eliminar seleccionados" onclick="removeMe();" style="font-size: 8pt">
<input type="button" value="Obtener valores seleccionados" onclick="saveMe();" style="font-size: 8pt">
</td>
</tr>
</table>
</form>
</center>

</body>
</html> 
Esto lo he cogido de aqui:
http://javascripts.astalaweb.com/For...larios%20V.asp

Es la opción selecciona elementos de la lista2 (por si alguien quiere verlo en funcionamiento).

He estado mirando el foro y he encontrado varias posibles soluciones, como por ejemplo:

Código HTML:
<script language="javascript">
	function selectAll()
	{
		for ( i = 0; i < document.forma.test.options.length; i++ )
			document.forma.test.options[i].selected = true;
	}
</script>
<form name="forma">
	<select name="test" multiple>
		<option value="1">1</option>
		<option value="1">2</option>
		<option value="1">3</option>
		<option value="1">4</option>
		<option value="1">5</option>				
	</select>
	<br />
	<input type="button" value="enviar" onclick="selectAll();" />
</form> 
Con esta función seleccionaria todos los valores del choiceBox.
Fuente http://www.forosdelweb.com/f15/recog...select-392570/

y para recogerlos del form, mediante el post, podria hacer esto:

Código PHP:
<select name="choicebox[]" multiple size="3">  

<?
foreach ($_POST['choiceBox'] as $indice => $valor){
echo 
"indice: ".$indice." => ".$valor."<br>";
}
?>
Fuente:http://www.forosdelweb.com/f18/selec...alores-196709/

y aqui es donde tengo el problema, cuando intento convertir el choiceBox en una array "[]" Deja de funcionarme la función java moveOver().

Gracias.
  #2 (permalink)  
Antiguo 26/09/2010, 12:03
Avatar de silvanha  
Fecha de Ingreso: marzo-2006
Ubicación: En mi mundo de sueños
Mensajes: 653
Antigüedad: 18 años, 1 mes
Puntos: 65
Respuesta: problema al recoger datos de un select multiple modificado con javascript

O sea que estas recogiendo un conjunto de combos? es decir cuando se utilizan arrays para recoger valores es que tienes varios con el mismo nombre, y recoges todos en un arreglo o tienes checkbox o cosas parecidas..

si quieres recoger el valor (y estas usando lo del primer ejemplo "selecciona elementos de la lista2") entonces solo necesitas recoger la variable "available", es decir no tienes arreglos

De hecho aunque uses el segundo ejemplo que pusiste (te felicito por tu labor de busqueda ^^) entonces lo recoges igual con el nombre en ese caso "test"..

Saludos ^^
__________________
●•· No hay nada imposible..
●•· Vico-X.. ;)
  #3 (permalink)  
Antiguo 26/09/2010, 12:19
 
Fecha de Ingreso: diciembre-2009
Mensajes: 51
Antigüedad: 14 años, 4 meses
Puntos: 1
Respuesta: problema al recoger datos de un select multiple modificado con javascript

si hago lo que tu me dices, solo recojo el ultimo valor seleccionado, por eso he intentado usar la funcion select all(). pero el problema lo sigo teniendo en el mismo sitio.
  #4 (permalink)  
Antiguo 26/09/2010, 12:26
Avatar de silvanha  
Fecha de Ingreso: marzo-2006
Ubicación: En mi mundo de sueños
Mensajes: 653
Antigüedad: 18 años, 1 mes
Puntos: 65
Respuesta: problema al recoger datos de un select multiple modificado con javascript

Haaay! que babosa.. tienes toda la razón.. ya te entendí .. mil disculpas..

Ok, en teoria el selectAll() debe funcionar solo sería cosa de cambiar los nombres de las variables..

Vuelvo en un rato, mientras pienso como ayudarte, voy de salida xD sorry!! =)
__________________
●•· No hay nada imposible..
●•· Vico-X.. ;)
  #5 (permalink)  
Antiguo 26/09/2010, 12:27
 
Fecha de Ingreso: diciembre-2009
Mensajes: 51
Antigüedad: 14 años, 4 meses
Puntos: 1
Respuesta: problema al recoger datos de un select multiple modificado con javascript

ok, gracias.
  #6 (permalink)  
Antiguo 26/09/2010, 21:29
Avatar de silvanha  
Fecha de Ingreso: marzo-2006
Ubicación: En mi mundo de sueños
Mensajes: 653
Antigüedad: 18 años, 1 mes
Puntos: 65
Respuesta: problema al recoger datos de un select multiple modificado con javascript

holas,

Me intrigo tu caso (o andaba muy aburrida no se jajaja)

Lo hice así:
Código Javascript:
Ver original
  1. function selectAll(){
  2.     var strValues = "";
  3.     var count = 0;
  4.     for ( i = 0; i < document.choiceForm.choiceBox.options.length; i++ ){
  5.         document.choiceForm.choiceBox.options[i].selected = true;
  6.         if (count == 0) {
  7.             strValues = document.choiceForm.choiceBox.options[i].value;
  8.         }
  9.         else {
  10.             strValues = strValues + "," + document.choiceForm.choiceBox.options[i].value;
  11.         }
  12.         count++;
  13.         document.choiceForm.valores.value = strValues;
  14.     }
  15.     document.choiceForm.submit();
  16. }

En el formulario agrego un campo hidden que se llama valores, y lo recibo, así:
Código PHP:
Ver original
  1. <?php
  2. $array = explode(",",$_POST["valores"]);
  3. foreach ($array as $indice => $valor){
  4.     echo "indice: ".$indice." => ".$valor."<br>";
  5. }
  6. ?>

Esto porque los arreglos no los trabajo igual JavaScript que PHP, entonces hago una especie de recolección con lo que haces, y al final solo lo divido con PHP :D

saludos!! (Y gracias por el entretenimiento xD)
__________________
●•· No hay nada imposible..
●•· Vico-X.. ;)
  #7 (permalink)  
Antiguo 26/09/2010, 23:38
 
Fecha de Ingreso: diciembre-2009
Mensajes: 51
Antigüedad: 14 años, 4 meses
Puntos: 1
Respuesta: problema al recoger datos de un select multiple modificado con javascript

Perfecto, muchas gracias, eres una crack.

Etiquetas: javascript, recoger, select
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 17:28.