> Faqs > Problema con evento onchange en Javascript

Problema con evento onchange en Javascript

Hola a todos, tengo problemas con este sencillo ejemplo en javaScript:

 <HTML>   
 <HEAD>   
 <TITLE>Ejemplo 16</TITLE>   
 </HEAD>   
 <BODY>   
   
 <H1>Formularios</H1>   
   
 <FORM name="datos" METHOD="POST">   
 <SELECT NAME="Colores" MULTIPLE>   
 <OPTION  
 VALUE="r">Rojo</OPTION>   
 <OPTION VALUE="g">Verde</OPTION>   
 <OPTION VALUE="b">Azul</OPTION>   
 </SELECT>   
   
 <BR><BR>   
 <SELECT NAME="Colores">   
 <OPTION VALUE="r">Rojo</OPTION>   
 <OPTION VALUE="g">Verde</OPTION>   
 <OPTION VALUE="b">Azul</OPTION>   
 </SELECT>   
 <BR><BR>   
 <INPUT TYPE="submit" onChange="document.write('OK')"><INPUT TYPE="Reset">   
 </FORM>   
   
 </BODY>   
 </HTML>

Al pulsar el boton enviar no me aparece el "OK" ¿Que hago mal?

Respuestas

El evento onchange es cuando cambia el elemento, en el caso de un botón de submit, que es donde lo has colocado, no tiene mucho sentido, porque el elemento no suele cambiar.

Lo que entiendo que querías es darle al botón y que pase algo, entonces el evento en concreto es "click".

<input type="submit" onclick="document.write('OK')">

Luego tienes otro problema que no tiene relación al evento onchange, pero que es importante: Al hacer click en el botón, se ejecutará el método document.write(). Este evento tiene un comportamiento un poco extraño, puesto que al ejecutarse se borra la página entera.

Es porque document.write() tiene funcionamiento solamente cuando el flujo de escritura de la página está en marcha. Por tanto, para poder ejecutarlo al hacer click lo que pasa es que el navegador tiene que abrir de nuevo el flujo de escritura, con lo que el documento se resetea.

Puedes probarlo tú mismo y verás que la página se te borra al hacer click. Si no deseabas este efecto simplemente tendrías que usar una caja de alerta o algo.

<input type="submit" onclick="alert('OK')">

Otra posibilidad sería escribir en un elemento de la página.

<input type="button" value="haz click" onclick="document.getElementById('mensaje').innerText = 'OK'">
<div id="mensaje"></div>

Espero que alguna de estas opciones te sirva.

Sergio
182 4 17 7

Seguramente debe de aparecer, pero dado el flujo del documento eso sucede despues del TAG </HTML> lo que provoca que no se vea. Deberías habilitar algun textbox dentro del BODY del documento y cambiar su propidad VALUE por "OK"... o algun otro truco como un WINDOW.ALERT o algo similar...

Héctor Daniel Correa