Foros del Web » Programando para Internet » Javascript »

[SOLUCIONADO] Devolver estado checkbox sin alert

Estas en el tema de Devolver estado checkbox sin alert en el foro de Javascript en Foros del Web. Hola, Estoy tratando de obtener el valor de un checkbox, pero no deseo que el resultado (si está checked o no) aparezca en pantalla con ...
  #1 (permalink)  
Antiguo 24/02/2013, 15:57
 
Fecha de Ingreso: septiembre-2012
Mensajes: 29
Antigüedad: 11 años, 7 meses
Puntos: 0
Devolver estado checkbox sin alert

Hola,
Estoy tratando de obtener el valor de un checkbox, pero no deseo que el resultado (si está checked o no) aparezca en pantalla con un 'alert'. Mi intención es hacerlo en una función JavaScript para poder llamarla desde un .php cuantas veces quiera.
He buscado por este y otros foros, así como algún manual de los que se encuentran por la web y he llegado a la conclusión de que soy un paquete porque, o lo que yo busco es muy rebuscado (que no lo quiero creer), o tiene "otro nombre".
¿Podríais ayudarme? ¿Cómo sería la función .js?
Gracias por adelantado.
  #2 (permalink)  
Antiguo 24/02/2013, 16:13
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 16 años, 9 meses
Puntos: 1567
Respuesta: Devolver estado checkbox sin alert

y, como que no se entiende mucho, salvo esto, y siempre suponiendo que tenés un checkbox único

vos no querés hacer esto

Código Javascript:
Ver original
  1. if(ckbox.checked == true){
  2. alert('checkbox marcado');
  3. }else{
  4. alert('checkbox desmarcado);
  5. }

eso está claro, pero entonces... ¿que querés hacer?
Y eso como se vincula con php?
estás enviando un form?
los checkboxes se generan dinámicamente desde una BD?
demasiados interrogantes como para darte una respuesta, tratá de ser más claro, y acompaña tu explicación de algún código que nos oriente

SAludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #3 (permalink)  
Antiguo 24/02/2013, 16:38
 
Fecha de Ingreso: septiembre-2012
Mensajes: 29
Antigüedad: 11 años, 7 meses
Puntos: 0
Respuesta: Devolver estado checkbox sin alert

Hola Emprear,
Cierto, redacté mi duda demasiado y no puse código que ayudara.
Como bien dices, no quiero algo como lo que has escrito. Mi idea es la siguiente:

- Tengo un formulario con un número dinámico de checkbox (casi seguro serán siempre 4, pero quiero poder aumentarlo fácilmente en el futuro si fuera necesario).
- Tengo un botón "Guardar" que almacenará en BD el valor de cada checkbox cuando lo pulse.
- El formulario lo tengo en un fichero .php que envía los datos a otro fichero "ValidateForms.php" en el que centralizo las llamadas de todo formulario de mi programa.
- Desde este "ValidateForms.php" había planteado hacer la llamada a la función JavaScript que comprobase, para un checkbox pasado por parámetros en dicha función, si está checkeado o no. El código del "ValidateForms.php" no lo pongo porque no he llegado a finalizarlo (le he dado muchas vueltas tratando de buscar alternativas de como hacerlo) y la función .js me muestra una excepción cuando trato de escribir lo siguiente:

Código Javascript:
Ver original
  1. function getCheckboxState(checkboxname){
  2.     if(document.getElementById(checkboxname).checked){
  3.         return true;
  4.     }
  5.     else{
  6.         return false;
  7.     }
  8. }

Espero haber sido algo más claro esta vez. De lo contrario, dímelo y trato de exponerlo de otra manera.
Un saludo.
  #4 (permalink)  
Antiguo 24/02/2013, 16:54
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 16 años, 9 meses
Puntos: 1567
Respuesta: Devolver estado checkbox sin alert

Cita:
Iniciado por burlock_spock Ver Mensaje
Hola Emprear,
Cierto, redacté mi duda demasiado y no puse código que ayudara.
Como bien dices, no quiero algo como lo que has escrito. Mi idea es la siguiente:

- Tengo un formulario con un número dinámico de checkbox (casi seguro serán siempre 4, pero quiero poder aumentarlo fácilmente en el futuro si fuera necesario).
- Tengo un botón "Guardar" que almacenará en BD el valor de cada checkbox cuando lo pulse.
- El formulario lo tengo en un fichero .php que envía los datos a otro fichero "ValidateForms.php" en el que centralizo las llamadas de todo formulario de mi programa.
- Desde este "ValidateForms.php" había planteado hacer la llamada a la función JavaScript que comprobase, para un checkbox pasado por parámetros en dicha función, si está checkeado o no. El código del "ValidateForms.php" no lo pongo porque no he llegado a finalizarlo (le he dado muchas vueltas tratando de buscar alternativas de como hacerlo) y la función .js me muestra una excepción cuando trato de escribir lo siguiente:

Código Javascript:
Ver original
  1. function getCheckboxState(checkboxname){
  2.     if(document.getElementById(checkboxname).checked){
  3.         return true;
  4.     }
  5.     else{
  6.         return false;
  7.     }
  8. }

Espero haber sido algo más claro esta vez. De lo contrario, dímelo y trato de exponerlo de otra manera.
Un saludo.
vamos analizando unas cosas
Tenés un form, digamos, por ahora, que con 4 chekboxes
ahi la primera duda

marcás los checkboxes, y trás hacerlo, apretás el botón submit del form, y el php que procesa el form guarda los valores de los checkbox seleccionados

ó

con tan solo clickear el checkbox, ya se guarda el valor de la bd (esto último se hace habitualmente con ajax)

son dos cosas completamente diferentes.

Mirá este ejercicio que tengo hecho sobre el manejo de checkboxes tanto con js como php, analizalo cuidadosamente y estudiá las posibles opciones y variantes, quizás te oriente
http://foros.emprear.com/php/boxes_js.php

Saludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #5 (permalink)  
Antiguo 24/02/2013, 17:18
 
Fecha de Ingreso: septiembre-2012
Mensajes: 29
Antigüedad: 11 años, 7 meses
Puntos: 0
Respuesta: Devolver estado checkbox sin alert

Emprear,
Lo que yo hago es lo 1º:
"marcás los checkboxes, y trás hacerlo, apretás el botón submit del form, y el php que procesa el form guarda los valores de los checkbox seleccionados"

Lo 2º lo haré cuando empiece a ver Ajax (de momento me estoy peleando aún con JS).

Voy a echarle un vistazo a tu código y te comento mañana.

Muchas gracias por tu tiempo!
  #6 (permalink)  
Antiguo 24/02/2013, 17:26
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 16 años, 9 meses
Puntos: 1567
Respuesta: Devolver estado checkbox sin alert

Cita:
Iniciado por burlock_spock Ver Mensaje
Emprear,
Lo que yo hago es lo 1º:
"marcás los checkboxes, y trás hacerlo, apretás el botón submit del form, y el php que procesa el form guarda los valores de los checkbox seleccionados"

Lo 2º lo haré cuando empiece a ver Ajax (de momento me estoy peleando aún con JS).

Voy a echarle un vistazo a tu código y te comento mañana.

Muchas gracias por tu tiempo!
Ah, bueno, lo 1º es mucho más criterioso. Yo solo le agregaría un confim(), es lo mejor para ese caso, preguntando si está seguro que quiere actualizar los registros seleccionados

Saludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #7 (permalink)  
Antiguo 28/02/2013, 14:24
 
Fecha de Ingreso: septiembre-2012
Mensajes: 29
Antigüedad: 11 años, 7 meses
Puntos: 0
Respuesta: Devolver estado checkbox sin alert

Hola de nuevo Emprear.
No pude contestar antes porque anduve liado.
He pensado si podría sustituir la función JS por algo más "rápido y sencillo". Se me ha ocurrido intentar obtener el valor del objeto "checked" que habría sido pasado a través del POST del formulario. Me explico:
1. Mi formulario, en el que tengo los checkbox, sería el siguiente:
Código PHP:
Ver original
  1. <form action="ValidateForms.php" name="admnotify" method="post">
  2.     <fieldset>
  3.         <legend>Sobre Sugerencias al Administrador</legend>
  4.         <?php
  5.         $str_value = 'value';
  6.         $str_adminNotifications = 'adminNotifications';
  7.         $valueColumn = getDBcompletecolumn($str_value, $str_adminNotifications);
  8.         $str_keyname = 'keyname';
  9.         $keynameColumn = getDBcompletecolumn($str_keyname, $str_adminNotifications);
  10.         $str_notification = 'notification';
  11.         $notificationColumn = getDBcompletecolumn($str_notification, $str_adminNotifications);
  12.         if($valueColumn['0']){
  13.             echo utf8_encode($notificationColumn['0']); ?> <input type="checkbox" name="<?php echo $keynameColumn['0']; ?>" checked><br/>
  14.             <?php
  15.             for($i=1;$i<getDBcolumns($str_adminNotifications);$i++){
  16.                 if($valueColumn[$i]){
  17.                     echo utf8_encode($notificationColumn[$i]); ?> <input type="checkbox" name="<?php echo $keynameColumn[$i]; ?>" checked disabled><br/>
  18.                 <?php
  19.                 }
  20.                 else{
  21.                     echo utf8_encode($notificationColumn[$i]); ?> <input type="checkbox" name="<?php echo $keynameColumn[$i]; ?>" disabled><br/>
  22.                 <?php
  23.                 }
  24.             }
  25.             ?>
  26.             <input type="hidden" value="h_admnotifysuggest" name="hiddenfield"><br/>
  27.             <input type="submit" value="Guardar" name="admnotifysuggest">
  28.         <?php
  29.         }
  30.         else{
  31.             echo utf8_encode($notificationColumn['0']); ?> <input type="checkbox" name="<?php echo $keynameColumn['0']; ?>"><br/>
  32.             <?php
  33.             for($i=1;$i<getDBcolumns($str_adminNotifications);$i++){
  34.                 if($valueColumn[$i]){
  35.                     echo utf8_encode($notificationColumn[$i]); ?> <input type="checkbox" name="<?php echo $keynameColumn[$i]; ?>" checked><br/>
  36.                 <?php
  37.                 }
  38.                 else{
  39.                     echo utf8_encode($notificationColumn[$i]); ?> <input type="checkbox" name="<?php echo $keynameColumn[$i]; ?>"><br/>
  40.                 <?php
  41.                 }
  42.             }
  43.             ?>
  44.             <input type="hidden" value="h_admnotifysuggest" name="hiddenfield"><br/>
  45.             <input type="submit" value="Guardar" name="admnotifysuggest">
  46.         <?php
  47.         }
  48.         ?>
  49.     </fieldset>
  50. </form>

2. Ya en el fichero en que valido los formularios tengo el siguiente trozo de código, destinado a comprobar si el valor que está guardado para ese checkbox en BBDD es igual o no al que ha pasado por el formulario:
Código PHP:
Ver original
  1. for($i=0;$i<getDBcolumns($str_adminNotifications);$i++){
  2.     if(getDBsinglefield($str_value, $str_adminNotifications, $str_id, $i) != $_POST[$keynameColumn[$i].checked]){
  3.         $query = "UPDATE `webcentral2013`.`adminNotifications` SET `value` = '".$_POST[$keynameColumn[$i]]."'
  4.         WHERE `adminNotifications`.`id` = '".$i."'";
  5.         if(executeDBquery($query)){
  6.             unset($str_adminNotifications);
  7.             unset($str_value);
  8.             unset($str_id);
  9.             unset($str_keyname);
  10.             unset($keynameColumn);
  11.             unset($query);
  12.             ?>
  13.                 <script type="text/javascript">
  14.                     alert('Configuración guardada con éxito.');
  15.                     window.location.href='Administrar.php';
  16.                 </script>
  17.             <?php
  18.         }

Pues bien, la línea del primer "if" me escupe un error "Use of undefined constant checked...
Por el error, obviamente, no estoy llamando bien al objeto checked. Creo que debo hacerlo desde código JS, pero me podrías decir tú cómo lo solucionarias exactamente?

PD: Que desesperación y que paquete que soy...
  #8 (permalink)  
Antiguo 28/02/2013, 14:37
Avatar de BloodShadow  
Fecha de Ingreso: marzo-2010
Ubicación: El Salvador
Mensajes: 393
Antigüedad: 14 años, 1 mes
Puntos: 52
Respuesta: Devolver estado checkbox sin alert

Instalate el validate de jquery para validar del lado del cliente asi con coloresy muy bonito, y dentro del php q recibes los datos valida q venga alguno checkeado... no quise leer todo el tread xq esta muy confuso todo jeje el compa @emprear te ayudara mucho asi q presta atencion :)
  #9 (permalink)  
Antiguo 02/03/2013, 15:50
 
Fecha de Ingreso: septiembre-2012
Mensajes: 29
Antigüedad: 11 años, 7 meses
Puntos: 0
Respuesta: Devolver estado checkbox sin alert

Hola BloodShadow,

Por lo que he podido leer, jQuery es AJAX, y al igual que AJAX, no lo conozco en absoluto y si fuera posible, me gustaria evitarlo de momento.

¿Alguna otra solución de alguien al problema que expongo? Igual me estoyempeñando y ni siquiera hace falta JS...
  #10 (permalink)  
Antiguo 02/03/2013, 15:58
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 16 años, 9 meses
Puntos: 1567
Respuesta: Devolver estado checkbox sin alert

Cita:
Iniciado por burlock_spock Ver Mensaje
Hola BloodShadow,

Por lo que he podido leer, jQuery es AJAX, y al igual que AJAX, no lo conozco en absoluto y si fuera posible, me gustaria evitarlo de momento.

¿Alguna otra solución de alguien al problema que expongo? Igual me estoyempeñando y ni siquiera hace falta JS...
Si querés utilizar solo php para detectar el estado del checkbox, mirá este ejemplo
http://foros.emprear.com/php/boxes_js.php
Sería el caso del primer botón para el primer Grupo, los restantes, actúan para el segundo grupo y utilizan javascript (sin jQuery)

SAludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #11 (permalink)  
Antiguo 02/03/2013, 16:15
 
Fecha de Ingreso: septiembre-2012
Mensajes: 29
Antigüedad: 11 años, 7 meses
Puntos: 0
Respuesta: Devolver estado checkbox sin alert

Buenas,

Pero es que lamentablemente lo que no consigo es recoger el valor de los checkbox en la variable $_POST[$keynameColumn[$i].checked]...
  #12 (permalink)  
Antiguo 04/03/2013, 08:45
Avatar de BloodShadow  
Fecha de Ingreso: marzo-2010
Ubicación: El Salvador
Mensajes: 393
Antigüedad: 14 años, 1 mes
Puntos: 52
Respuesta: Devolver estado checkbox sin alert

ese .checked en php no existe, hace algo asi en los input y los recojes como array

Código HTML:
Ver original
  1. <input type="checkbox" name="nombre[]" value="valor1" />
  2. <input type="checkbox" name="nombre[]" value="valor2" />
  3. <input type="checkbox" name="nombre[]" value="valor3" />
  #13 (permalink)  
Antiguo 04/03/2013, 09:24
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 16 años, 9 meses
Puntos: 1567
Respuesta: Devolver estado checkbox sin alert

Cita:
Iniciado por BloodShadow Ver Mensaje
ese .checked en php no existe, hace algo asi en los input y los recojes como array

Código HTML:
Ver original
  1. <input type="checkbox" name="nombre[]" value="valor1" />
  2. <input type="checkbox" name="nombre[]" value="valor2" />
  3. <input type="checkbox" name="nombre[]" value="valor3" />
Si, ya veo, además lo que me deja duas es

name="<?php echo $keynameColumn['0']; ?>"

name="<?php echo $keynameColumn[$i]; ?>" --> siendo $1i = 1;
lo que le va a imprimir
<input type="checkbox" name="nombre[0]" value="valor1" />
<input type="checkbox" name="nombre[1]" value="valor2" />
<input type="checkbox" name="nombre[1]" value="valor3" />

no se para que usa ese indice, ni tampoco
if($valueColumn[$i]){

Sería mejor que pase el HTML generado a ver que está imprimiendo con ese php
SAludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #14 (permalink)  
Antiguo 04/03/2013, 15:36
Avatar de BloodShadow  
Fecha de Ingreso: marzo-2010
Ubicación: El Salvador
Mensajes: 393
Antigüedad: 14 años, 1 mes
Puntos: 52
Respuesta: Devolver estado checkbox sin alert

Cita:
Iniciado por emprear Ver Mensaje
Si, ya veo, además lo que me deja duas es

name="<?php echo $keynameColumn['0']; ?>"

name="<?php echo $keynameColumn[$i]; ?>" --> siendo $1i = 1;
lo que le va a imprimir
<input type="checkbox" name="nombre[0]" value="valor1" />
<input type="checkbox" name="nombre[1]" value="valor2" />
<input type="checkbox" name="nombre[1]" value="valor3" />

no se para que usa ese indice, ni tampoco
if($valueColumn[$i]){

Sería mejor que pase el HTML generado a ver que está imprimiendo con ese php
SAludos
Saludos amigo @emprear yo igual sigo sin entender pero supongo que esta corriendo los checkbox al recibirlos como array con un forearch o algun tipo de bucle... pero como dices tu, sin codigo estamos programando a papel y lapiz LOL
  #15 (permalink)  
Antiguo 10/03/2013, 05:11
 
Fecha de Ingreso: septiembre-2012
Mensajes: 29
Antigüedad: 11 años, 7 meses
Puntos: 0
Respuesta: Devolver estado checkbox sin alert

Hola a todos,
Por fin lo resolví. Me ha costado sangre y sudores, pero buscando mucho, con la ayuda de todos vosotros y de un amigo, conseguí adaptar un código que encontramos y que me permitió ver que estaba entendiendo mal cómo funciona el paso de parámetros por POST.
Gracias!!

Etiquetas: checkbox, devolver, estado, js, php
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 18:45.