Foros del Web » Programando para Internet » Javascript »

checkBox.checked no funciona en IE8

Estas en el tema de checkBox.checked no funciona en IE8 en el foro de Javascript en Foros del Web. Buenas, Tengo el siguente problema, el checkbox creado en un zend_form: Código PHP:     $this -> addElement (                          'checkbox' ,                          'esexitus' ,         array( 'required'  ...
  #1 (permalink)  
Antiguo 18/11/2010, 11:09
 
Fecha de Ingreso: septiembre-2010
Mensajes: 34
Antigüedad: 13 años, 7 meses
Puntos: 0
Pregunta checkBox.checked no funciona en IE8

Buenas,
Tengo el siguente problema, el checkbox creado en un zend_form:
Código PHP:
    $this->addElement(
                        
'checkbox',
                        
'esexitus',
        array(
'required' => false'checked'=>0'label' => 'Éxitus''onclick'=>'gestioExitus()')
        ); 
En el html se muestra el checkbox:
...
Código HTML:
 <?php echo $form->esexitus->renderLabel(). $form->esexitus->renderViewHelper() ?>
...

Desde javascript consulto el estado del checkbox, y segun el que sea, habilito text o no:

Código:
exitus= document.getElementById('esexitus');
if(exitus.checked==true) document.getElementById('dataexitus').disabled=false;
En Firefox, funciona perfectamente pero en IE8 no, he puesto un alert para consultar la propiedad checked, pero siempre retorna 'false'.
Estube foreando, en algunos casos se recomendó usar onClick y no OnChange, y ya lo estoy haciendo, también que se visualizara la pagina en modo compatibilidad y tambien lo hago, pero nada, no consigo obtener el estado del checkbox en IE8.
Cualquier ayuda es agradecida!!
saludos
  #2 (permalink)  
Antiguo 18/11/2010, 11:35
Avatar de Panino5001
Me alejo de Omelas
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.148
Antigüedad: 19 años, 10 meses
Puntos: 834
Respuesta: checkBox.checked no funciona en IE8

Te sugiero que muestres el código html resultante de tu script php, para que tu mensaje sea más claro. También te sugiero que expliques mejor el problema y tu objetivo.
  #3 (permalink)  
Antiguo 18/11/2010, 12:44
 
Fecha de Ingreso: septiembre-2010
Mensajes: 34
Antigüedad: 13 años, 7 meses
Puntos: 0
Respuesta: checkBox.checked no funciona en IE8

Perdon! quizas fuí desasiado escueta..
Tengo un campo de texto que habilio/desabilito segun si el checkbox 'esexitus' está marcado o no.
Cada vez que se hace un clic sobre el checkbox ejecuto la función javascript (mediante el evento onClick) :
Código:
function gestioExitus(){
exitus= document.getElementById('esexitus');
	if(exitus.checked==true) document.getElementById('dataexitus').disabled=false;
	else document.getElementById('dataexitus').disabled=true;
}
La llamada al mètodo funciona, se ejecuta tantas veces como clicks sobre el checkbox, el problema es que en IE8 al realizar la comprobación de si el checkbox está marcado:
Código:
 if( 'exitus.checked'
... siempre devuelve 'false' sea cual sea el estado del checkbox(marcado/nomarcado)
Este mismo código funciona perfectamente en Firefox.
Adjunto el html resultante:
Código HTML:
<html>
	<head>
	    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><meta http-equiv="Content-Type" content="text/html; charset=utf8" /><title>GestNED</title><link href="/css/cssfront.css" media="screen" rel="stylesheet" type="text/css" />
		<link href="/css/gestned.css" media="screen" rel="stylesheet" type="text/css" />	
	
		<script language="JavaScript"> 
			function gestioExitus(){
			alert('entra');
			exitus= document.getElementById('esexitus');
			alert(exitus);alert(exitus.checked);
			if(exitus.checked==true) document.getElementById('dataexitus').disabled=false;
			else document.getElementById('dataexitus').disabled=true;
			} 
		</script>
	
	</head>
 
	<body class="in">  
	   <div id="in" class="in">
			<form name="PacientFitxaAlta" id="PacientFitxaAlta" method="post" action="index" >    
				<table id="tauAltaDadesPersonalsPac" class="tauAltaDadesPersonalsPac campsform"> 	
					<tr>
						<td><label for="cognom2" class="optional">2on Cognom</label>
							<input type="text" name="cognom2" id="cognom2" value="" size="24" maxlength="200" /> </td>
						<td> <label for="esexitus" class="optional">Éxitus</label>
							<input type="hidden" name="esexitus" value="0" /><input type="checkbox" name="esexitus" id="esexitus" value="1" onclick="gestioExitus()" /> <label for="dataexitus" class="optional">Data defunció</label>
							<input type="text" name="dataexitus" id="dataexitus" value="" size="9" maxlength="10" disabled="1" />  
						</td>
					</tr>
				</table> 
			</form>
	 
		</div>
	</body>
</html>
 
Gracias!
  #4 (permalink)  
Antiguo 18/11/2010, 13:56
Avatar de Panino5001
Me alejo de Omelas
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.148
Antigüedad: 19 años, 10 meses
Puntos: 834
Respuesta: checkBox.checked no funciona en IE8

Cambiale el name al campo oculto esexitus y funcionará sin problemas (explorer confunde names e ids con nombres de variable y eso te genera el conflicto porque estás usando 2 veces ese name)
  #5 (permalink)  
Antiguo 18/11/2010, 14:21
 
Fecha de Ingreso: septiembre-2010
Mensajes: 34
Antigüedad: 13 años, 7 meses
Puntos: 0
Respuesta: checkBox.checked no funciona en IE8

Me di cuenta de esto al pegar el html, pero he estado mirando como quitar-lo y no doy con ello.. El checkbuton se añade al form mediante php, utilizo Zend Framework:
En el form que contiene los elementos de la vista:
Código PHP:
Ver original
  1. $this->addElement(
  2.                         'checkbox',
  3.                         'esexitus',
  4.         array('required' => false, 'checked'=>0, 'label' => 'Éxitus', 'onclick'=>'gestioExitus()')
  5.         );
Y Zend añade el hidden por su cuenta.. He googleado un poco, y encontre quien dice que cuando el checkbox no está marcado, el hidden se ignora.
De todas formas, copié el html sobre un notepad y le quité el elemento hidden y al ejecutar sobre IE8 sigue sin funcionar....
Alguna idea más?? ya no se que probar...
Saludos!
  #6 (permalink)  
Antiguo 18/11/2010, 14:31
Avatar de stramin  
Fecha de Ingreso: marzo-2008
Ubicación: Cubil felino
Mensajes: 1.652
Antigüedad: 16 años, 1 mes
Puntos: 336
De acuerdo Respuesta: checkBox.checked no funciona en IE8


GO! GO! ustedes pueden!
  #7 (permalink)  
Antiguo 18/11/2010, 14:49
 
Fecha de Ingreso: septiembre-2010
Mensajes: 34
Antigüedad: 13 años, 7 meses
Puntos: 0
Respuesta: checkBox.checked no funciona en IE8

Alguna sugerencia stramin???
  #8 (permalink)  
Antiguo 18/11/2010, 15:23
Avatar de stramin  
Fecha de Ingreso: marzo-2008
Ubicación: Cubil felino
Mensajes: 1.652
Antigüedad: 16 años, 1 mes
Puntos: 336
Respuesta: checkBox.checked no funciona en IE8

nop, la verdad Panino5001 va mucho mejor encaminado en esto, si alguien te puede ayudar sería el.
  #9 (permalink)  
Antiguo 18/11/2010, 15:36
Avatar de Panino5001
Me alejo de Omelas
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.148
Antigüedad: 19 años, 10 meses
Puntos: 834
Respuesta: checkBox.checked no funciona en IE8

Cita:
De todas formas, copié el html sobre un notepad y le quité el elemento hidden y al ejecutar sobre IE8 sigue sin funcionar....
Estás seguro de esto? Porque yo lo probé y funciona...
  #10 (permalink)  
Antiguo 18/11/2010, 15:52
 
Fecha de Ingreso: septiembre-2010
Mensajes: 34
Antigüedad: 13 años, 7 meses
Puntos: 0
Respuesta: checkBox.checked no funciona en IE8

Pues ya no entiendo nada, a mi sigue sin funcionarme... si he quitado todo lo del hidden, el <tr> que lo contiene queda así:
Código HTML:
<tr>
	<td><label for="cognom2" class="optional">2on Cognom</label>
		<input type="text" name="cognom2" id="cognom2" value="" size="24" maxlength="200" /> </td>
	<td> <label for="esexitus" class="optional">exitus</label>
		 <input type="checkbox" name="esexitus" id="esexitus" value="1" onclick="gestioExitus()" />		  				 
		 <label for="dataexitus" class="optional">Data defunció</label>
		<input type="text" name="dataexitus" id="dataexitus" value="" size="9" maxlength="10" disabled="1" />  
	</td>
</tr> 
Yo tengo la versión 8.0.7600.16385 del IE8, me puedes facilitar la tuya? podria ser debido a la versión??
Y si no es mucho pedir,puedes probar si a ti te funciona sin quitar el elemento hidden?? así descarto..
gracias!
  #11 (permalink)  
Antiguo 18/11/2010, 20:32
Avatar de Panino5001
Me alejo de Omelas
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.148
Antigüedad: 19 años, 10 meses
Puntos: 834
Respuesta: checkBox.checked no funciona en IE8

Mi versión de IE es 8.07600.16385. El código con que lo acabo de probar es este:
Código PHP:
<html>
    <
head>
        <
meta http-equiv="Content-Type" content="text/html; charset=utf8" /><title>GestNED</title><link href="/css/cssfront.css" media="screen" rel="stylesheet" type="text/css" />
        <
link href="/css/gestned.css" media="screen" rel="stylesheet" type="text/css" />    
    
        <
script language="JavaScript"
            function 
gestioExitus(){
            
exitusdocument.getElementById('esexitus');
            
alert(exitus.checked);
            if(
exitus.checked==truedocument.getElementById('dataexitus').disabled=false;
            else 
document.getElementById('dataexitus').disabled=true;
            } 
        
</script>
    
    </head>
 
    <body class="in">  
       <div id="in" class="in">
            <form name="PacientFitxaAlta" id="PacientFitxaAlta" method="post" action="index" >    
                <table id="tauAltaDadesPersonalsPac" class="tauAltaDadesPersonalsPac campsform">     
                    <tr>
    <td><label for="cognom2" class="optional">2on Cognom</label>
        <input type="text" name="cognom2" id="cognom2" value="" size="24" maxlength="200" />  </td>
    <td> <label for="esexitus" class="optional">exitus</label>
         <input type="checkbox" name="esexitus" id="esexitus" value="1" onclick="gestioExitus()" />                           
         <label for="dataexitus" class="optional">Data defunció</label>
        <input type="text" name="dataexitus" id="dataexitus" value="" size="9" maxlength="10" disabled="1" />  
    </td>
</tr>
                </table> 
            </form>
     
        </div>
    </body>
</html> 
Ojo, hay algo incorrecto en tu estructura html. Revisalo, porque una estructura html correcta arrancaría así:
Código PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<
html xmlns="http://www.w3.org/1999/xhtml"
Es decir, primero el doctype y luego el tag html, y la tuya arranca de otra manera (yo hice esa corrección antes del testeo casi de manera automática).
  #12 (permalink)  
Antiguo 19/11/2010, 02:40
 
Fecha de Ingreso: septiembre-2010
Mensajes: 34
Antigüedad: 13 años, 7 meses
Puntos: 0
Respuesta: checkBox.checked no funciona en IE8

Gracias por la corrección, no me habia dado cuenta que lo tenia al revés.. lo he cambiado, pero el estado del checkBox sigue sin funcionar. Seguí toqueteando y encontré la solución, adjunto la situación que no funciona y la que si, por si alguien se encuentra en esto..
Antes el código era:
Creación del checkbox en el Form de Zend:
Código PHP:
$this->addElement(
        
'checkbox',
        
'esexitus',
        array(
'required' => false'checked'=>0'label' => 'Éxitus''onclick'=>'gestioExitus()')
        ); 
Se muestra el check box en la vista .html:
Código HTML:
<td> <?php echo $form->esexitus->renderLabel(). $form->esexitus->renderViewHelper() ?></td> 
Desde el javascript de la vista, se gestiona si el checkbox 'esexitus' está marcado o no:
function gestioExitus(){
exitus= document.getElementById('esexitus');
if(exitus.checked==true) { <-- ESTO EN IE8 NO ME FUNCIONA
document.getElementById('dataexitus').disabled=fal se;
}else document.getElementById('dataexitus').disabled=tru e;
}

El problema se soluciona si a la función javascript 'gestioExitus' se le pasa el propio checkbox (desde el form). Quedaria de la siguiete forma:

Creación del checkbox en el Form de Zend:
Código PHP:
$this->addElement(
        
'checkbox',
        
'esexitus',
        array(
'required' => false'checked'=>0'label' => 'Éxitus''onclick'=>'gestioExitus([COLOR="Red"]this[/COLOR])')
        ); 
Se muestra el check box en la vista .html:
Código HTML:
<td> <?php echo $form->esexitus->renderLabel(). $form->esexitus->renderViewHelper() ?></td> 
Desde el javascript de la vista, se gestiona si el checkbox 'esexitus' está marcado o no:
function gestioExitus(exitus){
// exitus= document.getElementById('esexitus'); <-- ESTO FUERA if(exitus.checked==true) {
document.getElementById('dataexitus').disabled=fal se;
}else document.getElementById('dataexitus').disabled=tru e;
}

De este modo funciona me funciona en IE8 i firefox, aunque sigo sin entender porque antes no funcionava...
Muchas gracias por los consejos y la paciencia!!
saludos

Etiquetas: chackbox, ie8
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 21:50.