Foros del Web » Programando para Internet » Javascript »

Arreglo de <FORM>

Estas en el tema de Arreglo de <FORM> en el foro de Javascript en Foros del Web. Tengo un script para una función de gestión documental que trata de enviar documentos a los gestores autorizados de un teterminado Proyecto... Dentro del script ...
  #1 (permalink)  
Antiguo 21/05/2012, 09:29
 
Fecha de Ingreso: noviembre-2003
Mensajes: 78
Antigüedad: 20 años, 5 meses
Puntos: 0
Arreglo de <FORM>

Tengo un script para una función de gestión documental que trata de enviar documentos a los gestores autorizados de un teterminado Proyecto...
Dentro del script tengo el siguiente arreglo:

Abro el <FORM>
echo "<form method=\"post\" name=\"maruid\">";

Pongo un checkbox para activar o desactivar todos los usuarios
echo "<input name=\"allbox\" onclick=\"CheckAll();\" type=\"checkbox\" value=\""._CHECKALL."\" checked>Todos los gestores autorizados<br>";

Hago un while para componer el array de usuarios a los que voy a enviar....
while ($condiciones){
echo "<input type=\"checkbox\" name=\"a_uid[]\" value=\"$uid\" checked>";
}

Hago otro while para componer el array de documentos que voy a enviar....
while ($condiciones){
echo "<input type=\"checkbox\" name=\"a_did[]\" value=\"$did1\" checked><font class=\"tiny_blanco\">$archivo1<br></font>";
}

Envío $a_uid y $a_did
echo "<INPUT TYPE=\"SUBMIT\" NAME=\"op\" VALUE=\"Enviar\">";

escribo el javascript para activar o desactivar el array $a_uid (destinatarios)
///////////////////////////////////////////////
echo "<script type=\"text/javascript\">\n\n
<!--\n\n
function CheckAll() {\n
for (var i=0;i<document.maruid.elements.length;i++) {\n
var e = document.maruid.elements[i];\n
if ((e.name != 'allbox') && (e.type=='checkbox'))\n
e.checked = document.maruid.allbox.checked;\n
}\n
}\n\n

function CheckCheckAll() {\n
var TotalBoxes = 0;\n
var TotalOn = 0;\n
for (var i=0;i<document.maruid.elements.length;i++) {\n
var e = document.maruid.elements[i];\n
if ((e.name != 'allbox') && (e.type=='checkbox')) {\n
TotalBoxes++;\n
if (e.checked) {\n
TotalOn++;\n
}\n
}\n
}\n
if (TotalBoxes==TotalOn) {\n
document.maruid.allbox.checked=true;\n
} else {\n
document.maruid.allbox.checked=false;\n
}\n
}\n\n
-->\n
</script>\n\n";
////////////////////////////
Cierro el FORM
echo "</FORM>";

Hasta aquí todo funciona bien con una salvedad que es que yo quiero que el CkeckAll actue sólamente sobre el array de los usuarios ($a_uid) pero realmente me activa y desactiva todos los checkbox ($a_uid y $a_did).

Pienso que el problema es de anidamiento de <form> pero no encuentro el fallo.

¿Me podeis ayudar?. Supongo que sí pues siempre lo hacéis bien.

Muchas gracias.
  #2 (permalink)  
Antiguo 21/05/2012, 09:43
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Respuesta: Arreglo de <FORM>

Hola:

A bote pronto, bastaría con seleccionar solo los que quieres activar...

function CheckAll() {
for (var i=0;i<document.maruid["a_uid[]"].length;i++)
document.maruid["a_uid[]"][i].checked = document.maruid.allbox.checked;
}

No me fijé en detalle, pero te comento un par de cosillas...

En este foro es mejor que pongas el código resultante (ver código fuente).
Puedes simplificar algo el código por ejemplo pasando el formulario como parámetro.

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #3 (permalink)  
Antiguo 21/05/2012, 12:16
 
Fecha de Ingreso: noviembre-2003
Mensajes: 78
Antigüedad: 20 años, 5 meses
Puntos: 0
Respuesta: Arreglo de <FORM>

Fantástico. Problema solucionado.
Trataré de seguir tus consejos para la generación de posts aunque no me quedó muy claro pues lo que intenté es facilitarte la consulta describiendo sólo el problema del script ya que el mismo es muy largo.
Muchas gracias
  #4 (permalink)  
Antiguo 01/06/2012, 12:16
 
Fecha de Ingreso: noviembre-2003
Mensajes: 78
Antigüedad: 20 años, 5 meses
Puntos: 0
Respuesta: Arreglo de <FORM>

Las necesidades de mis usuarios me hacen volver al tema que ya me habías solucionado poniendolo un poco más difícil:
Ahora necesito enviar un conjunto de documentos a los usuarios de las diderentes divisiones de la empresa; es decir que en algunos casos necesito poder agrupar los CheckAll por división.....Ya tengo el array de los documentos a enviar, lo que necesito es seleccionar los usuarios por grupos($bduser)


<?php
echo "<form method=\"post\" name=\"prvmie\" action=\"modules.php?name=MAIL&func=Enviar\">";

echo "TODOS LOS USUARIOS.<input name=\"allbox\" onclick=\"CheckAll();\" type=\"checkbox\" value=\""._CHECKALL."\"><br>"; //todos los usuarios
$result=sql_query("select uid,bduser,name,email from ".$prefix."_users order by bduser", $dbi);
$bd="";
////While para hacer el array de users
while(list($uid,$bduser,$name,$email) = sql_fetch_row($result, $dbi)) {
if ($bduser !=$bd){
echo "$bduser:<input name=\"allbox\" onclick=\"CheckAll();\" type=\"checkbox\" value=\""._CHECKALL."\"><br>"; //usuarios de cada division
}

echo "<input type=\"checkbox\" name=\"a_uid[]\" value=\"$uid\">$name<br>";//usuarios individuales
$bd=$bduser;
}

echo "<script type=\"text/javascript\">\n\n

function CheckAll() {
for (var i=0;i<document.prvmie['a_uid[]'].length;i++)
document.prvmie['a_uid[]'][i].checked = document.prvmie.allbox.checked;
}

function CheckCheckAll() {\n
var TotalBoxes = 0;\n
var TotalOn = 0;\n
for (var i=0;i<document.prvmie.elements.length;i++) {\n
var e = document.prvmie.elements[i];\n
if ((e.name != 'allbox') && (e.type=='checkbox')) {\n
TotalBoxes++;\n
if (e.checked) {\n
TotalOn++;\n
}\n
}\n
}\n
if (TotalBoxes==TotalOn) {\n
document.prvmie.allbox.checked=true;\n
} else {\n
document.prvmie.allbox.checked=false;\n
}\n
}\n\n
-->\n
</script>\n\n";

echo "</form>";

///////////////////////
Supongo que habrá que meter un identificador para diferenciar cada grupo pero no se cómo hacerlo...¿Me puedes ayudar?

Gracias de antemano

Etiquetas: funcion, input, arreglos
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 05:48.