Foros del Web » Creando para Internet » HTML »

Desactivar un boton al pulsarlo

Estas en el tema de Desactivar un boton al pulsarlo en el foro de HTML en Foros del Web. Veréis, yo tengo un botón para enviar un formulario. Quiero que al pulsarlo se descative, para que no le en 2 o 3 veces Si ...
  #1 (permalink)  
Antiguo 03/12/2005, 12:05
Avatar de kokecola2k2  
Fecha de Ingreso: febrero-2004
Mensajes: 130
Antigüedad: 13 años, 9 meses
Puntos: 0
Información Desactivar un boton al pulsarlo

Veréis, yo tengo un botón para enviar un formulario. Quiero que al pulsarlo se descative, para que no le en 2 o 3 veces

Si pongo un texto con in vinculo para desctivarlo me funciona
Código HTML:
<div align="center"><a href= "#"onclick="document.forms.formulario.enviar.disabled=true;return false;">desactivar</a></div> 
Pero eso no es lo que quiero, sino que al pulsarlo se desactive , asi que supuestamente sería esto

Código HTML:
INPUT TYPE="submit" VALUE="Enviar Colaboración" name="enviar" style="border: 1px outset #0000FF"  onload="document.forms.formulario.enviar.disabled=false;return false;">
Pero este ultimo no funcoina, lo hace todo pero al hacer clic no se desactiva.

Alguien me puede ayudar?
  #2 (permalink)  
Antiguo 03/12/2005, 12:11
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.544
Antigüedad: 15 años, 8 meses
Puntos: 1262
Hola kokecola2k2:

El manejador de eventos onload solo sirve en el tag body, para tu caso deberías usar el onclick:

<INPUT TYPE="submit" VALUE="Enviar Colaboración" name="enviar" style="border: 1px outset #0000FF" onclick="document.forms.formulario.enviar.disabled =false">...

Ten cuidado con el uso de "return false"... no deberías usarlo alegremente

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #3 (permalink)  
Antiguo 03/12/2005, 12:31
Avatar de kokecola2k2  
Fecha de Ingreso: febrero-2004
Mensajes: 130
Antigüedad: 13 años, 9 meses
Puntos: 0
bueno, perdon, es que el codigo que puse estaba mal porque estaba probando y el ultimo que puse fue ese,onload, pero el que tenia puesto era onclick pero no me funciona tampoco con onclick... que puedo hacer?
  #4 (permalink)  
Antiguo 03/12/2005, 12:46
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 16 años, 3 meses
Puntos: 380
¿has probado con un onclick="this.disabled=true" ?
  #5 (permalink)  
Antiguo 03/12/2005, 12:57
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.544
Antigüedad: 15 años, 8 meses
Puntos: 1262
Cita:
Iniciado por tunait
¿has probado con un onclick="this.disabled=true" ?
¡Je, je!... no me había quedado con que disabled=true es la deshabilitación

Suerte que andaba tunait con ojo avizor (¡Saludos !)
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #6 (permalink)  
Antiguo 03/12/2005, 13:05
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 16 años, 3 meses
Puntos: 380
Cita:
Iniciado por caricatos
Suerte que andaba tunait con ojo avizor (¡Saludos !)
Holaa Pepe!!
  #7 (permalink)  
Antiguo 10/08/2006, 18:36
Avatar de Escoffie  
Fecha de Ingreso: abril-2003
Ubicación: Mérida, Yucatán
Mensajes: 242
Antigüedad: 14 años, 7 meses
Puntos: 9
Hola.

Perdón por colarme en este post, pero ya que se trata de lo mismo, aprovecho.

Tengo este código que bajé por ahí:
Código:
 function disableForm(form) {
     if (document.getElementById) { 
          theform = document.getElementById(form);
          for (i = 0; i < theform.length; i++) {
               var tempobj = theform.elements[i];
               if (tempobj.type.toLowerCase() == "submit") 
                    tempobj.disabled = true;
         }
     return true;
     }
}
Se supone que deshabilita el botón cuyo tipo sea igual a "submit" en el formulario llamado como el valor de la variable form que se pasa por la función, pero tiene dos problemas:
  1. En Explorer 6.0 deshabilita el botón, pero no se envía el formulario
  2. En Firefox 1.5 se envía el formulario, pero no se deshabilita el botón
¿Alguna idea o código alternativo?

Saludos y gracias.
  #8 (permalink)  
Antiguo 10/08/2006, 20:42
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.544
Antigüedad: 15 años, 8 meses
Puntos: 1262
Hola:

getElementById devuelve un elemento y no un array...

Si quieres deshabilitar un botón concreto lo puedes hacer en base a su id o como un elemento del formulario con su stributo name... En este último caso puedes desarrollar un array, y aunque se admite creo que es mejor no repetir un botón submit con el mismo nombre.

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #9 (permalink)  
Antiguo 14/08/2006, 08:32
Avatar de Escoffie  
Fecha de Ingreso: abril-2003
Ubicación: Mérida, Yucatán
Mensajes: 242
Antigüedad: 14 años, 7 meses
Puntos: 9
Hola Caricatos, gracias por tu respuesta.
En este caso, según entiendo, uso GetElementById para hacer referencia a un formulario, mismo cuyos campos sí funcionan como elementos de un array. Es decir el "array" theform contendría 3 elementos si el formulario tuviera dos campos de texto y un botón.
Entonces recorriendo el array para encontrar el objeto cuyo tipo (no su ID) sea Submit se puede deshabilitar dicho elemento.
Gracias a tu comentario me dicuenta que es algo absurdo hacerlo así cuando podría referirme directamente al ID del botón de Submit, sin embargo el problema es el mismo. Hice el intento de poner directamente en el botón en un onclick="this.disabled=true" y pasa que en Explorer cambia el estado del botón pero no envía el formulario y en Firefox no se desactiva y sí envía el formulario.

Gracias, y saludos
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 20:41.