Foros del Web » Programando para Internet » Javascript »

Problema formulario

Estas en el tema de Problema formulario en el foro de Javascript en Foros del Web. Wenas! tengo un formulario donde se muestran unos datos, acompañador de su respectivo checkbox: [ ] Datos 1 [ ] Datos 2 Y un button ...
  #1 (permalink)  
Antiguo 01/07/2009, 12:01
 
Fecha de Ingreso: mayo-2009
Mensajes: 72
Antigüedad: 15 años
Puntos: 0
Problema formulario

Wenas! tengo un formulario donde se muestran unos datos, acompañador de su respectivo checkbox:

[ ] Datos 1
[ ] Datos 2

Y un button que llama a la siguiente funcion:

Código:
<script language="JavaScript">
function llamar(modo) {
    var cuenta = 0;
    for (var i=0;i<document.forms[0].seleccion[i].length;i++)
        if (document.forms[0].seleccion[i].checked)
            cuenta++;
    if (cuenta==0 && (modo=="deleteUser")) {
        alert("No has seleccionado ningún paciente");
        return false;
    }
    document.forms[0].action = modo + ".jsp";
    document.forms[0].submit();
}
</script>
Si solo he seleccionado 1 casilla checkbox, "document.forms[0].seleccion[i].length" devuelve "undefined" en vez de devolver "1", en cambio si selecciono 2 checkbox o más, entra en el bucle for y funciona todo perfectamente.

Alguien sabe por qué puede ser?? Muchas gracias.
  #2 (permalink)  
Antiguo 01/07/2009, 13:30
 
Fecha de Ingreso: junio-2009
Mensajes: 32
Antigüedad: 14 años, 10 meses
Puntos: 2
Respuesta: Problema formulario

verifica esto
Cita:
for (var i=0;i<document.forms[0].seleccion[i].length;i++)
ese indice i en selección[i] no va...!

suerte!!
  #3 (permalink)  
Antiguo 02/07/2009, 03:34
 
Fecha de Ingreso: mayo-2009
Mensajes: 72
Antigüedad: 15 años
Puntos: 0
Respuesta: Problema formulario

Y como puedo referirme a <input type="checkbox" name="seleccion"../> si no es con seleccion[i]??, es que si hay al menos 2 datos, document.forms[0].seleccion[i].length devuelve "2" o mas sin problema pero si solo hay 1, devuleve "undefined" en vez de devolver "1" y no se por qué!

Gracias por la respuesta!
  #4 (permalink)  
Antiguo 02/07/2009, 09:46
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años
Puntos: 1485
Respuesta: Problema formulario

lo que sucede es cuando el navegador encuentra mas de un elemento con el mismo nombre (attribute name), automaticamente se crea una coleccion de elementos. es un tipo de objeto muy parecido a los array en el sentido de que contiene indice para referirse a sus elementos.

sin embargo, cuando el navegador encuentra un solo elemento con un nombre, no se crea la coleccion de elementos antes descrita. en este caso es un objeto simple que hace referencia al elemento.
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #5 (permalink)  
Antiguo 02/07/2009, 10:16
 
Fecha de Ingreso: mayo-2009
Mensajes: 72
Antigüedad: 15 años
Puntos: 0
Respuesta: Problema formulario

Ok, gracias por la explicacion! Entonces como puedo hacer la funcion javascript para controlar eso?? Ahora mismo lo tengo asi:
Código:
function llamar (modo) {
var cuenta=0;
if (document.forms[0].seleccion!=null)
    for (var i=0;i<document.forms[0].seleccion.lenght;i++) {
         if (document.forms[0].seleccion[i].checked)
             cuenta++;
    }
if (cuenta==0 && modo="deleteUser"))
    return false;
document.forms.modo.action=modo+".jsp";
document.forms.modo.submit();
}
Muchas gracias!!
  #6 (permalink)  
Antiguo 02/07/2009, 10:46
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años
Puntos: 1485
Respuesta: Problema formulario

tengo que ver el codigo HTML, pues no logro entender si realmente tienes mas de un elemento con el mismo nombre. supongo que te bastaria asi:
Código:
function llamar (modo) {
var cuenta=0;
for (var i=0;i<document.forms[0].seleccion.lenght;i++) {
         if (document.forms[0].seleccion[i].checked)
             cuenta++;
}
if (cuenta==0 && modo=="deleteUser")return false;
document.forms.modo.action=modo+".jsp";
document.forms.modo.submit();
}
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #7 (permalink)  
Antiguo 02/07/2009, 12:40
 
Fecha de Ingreso: mayo-2009
Mensajes: 72
Antigüedad: 15 años
Puntos: 0
Respuesta: Problema formulario

El codigo HTML que genera la pagina .jsp es el siguiente:
Código:
<form method="post">
<table>
    <tr>
          <td> <input type="checkbox" name seleccion" value=1 /> </td>
          <td> 1 </td>
          <td> Antonio </td>
          <td> 650789654 </td>
          .......
     </tr>
     <tr>
          <td> <input type="checkbox" name seleccion" value=4 /> </td>
          <td> 4 </td>
          <td> Maria</td>
          <td> 610234567 </td>
          .......
     </tr>
     .........
</table>
.........
<input type="button" value="Borrar" onclick="llamar('deleteUser');">
</form>
  #8 (permalink)  
Antiguo 03/07/2009, 10:22
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años
Puntos: 1485
Respuesta: Problema formulario

si el codigo HTML generado es exactamente como me lo presentas, entonces tienes un problema en la sintaxis HTML. especificamente en los atributos name donde debe ser atributo="valor" y tu codigo se lo presenta asi atributo valor". en cuanto al codigo javascript, debe funcionarte el ultimo que mostre.
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #9 (permalink)  
Antiguo 03/07/2009, 12:53
 
Fecha de Ingreso: junio-2009
Mensajes: 32
Antigüedad: 14 años, 10 meses
Puntos: 2
Respuesta: Problema formulario

no le des nombre a tu checkbox... mejor accede por la tabla, para esto si dale un id o nombre a la tabla y accedes asi...

Cita:
var tabla=document.getElementById("idtabla");
var numfilas=tabla.rows.length;
for(i=0;i<numfilas;i++)
{ if (tabla.rows[i].cells[0].childNodes[0].checked) //verifico el check de cada fila
....
}
  #10 (permalink)  
Antiguo 07/07/2009, 11:33
 
Fecha de Ingreso: mayo-2009
Mensajes: 72
Antigüedad: 15 años
Puntos: 0
Respuesta: Problema formulario

ok, ya funciona todo correctamente accediendo mediante la tabla! muchas gracias por la ayuda!!!
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 09:27.