Foros del Web » Programando para Internet » Javascript »

[SOLUCIONADO] Cambiar modo de interacción interactivamente

Estas en el tema de Cambiar modo de interacción interactivamente en el foro de Javascript en Foros del Web. Buenas. Estaba haciendo una prueba con el parámetro evento del método addEventListener. Tengo el siguiente código HTML: @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código HTML: Ver original < form ...
  #1 (permalink)  
Antiguo 14/02/2014, 15:35
 
Fecha de Ingreso: julio-2006
Ubicación: Barcelona
Mensajes: 244
Antigüedad: 17 años, 9 meses
Puntos: 32
Cambiar modo de interacción interactivamente

Buenas.

Estaba haciendo una prueba con el parámetro evento del método addEventListener. Tengo el siguiente código HTML:
Código HTML:
Ver original
  1. <form method="get" action="" name="suma">
  2.     <select name="eventType">
  3.         <option value="submit">submit</option>
  4.         <option value="input" >input</option>
  5.     </select>
  6.     <input type="text" name="num1" />
  7.     +
  8.     <input type="text" name="num2" />
  9.     =
  10.     <output name="result"></output>
  11.     <input type="submit" value="resultado"/>
  12. </form>
Tengo un campo select que según si está seleccionada la opción submit o input quiero que el formulario responda al evento submit o input, respectivamente. Aquí el código javascript:
Código Javascript:
Ver original
  1. window.addEventListener( "load", function(){
  2.  
  3.     var formSuma  = document.forms.suma;
  4.     var eventType = formSuma.eventType.value;
  5.     formSuma.eventType.addEventListener( "change", function(){
  6.         console.log( formSuma.eventType.value );
  7.     });
  8.  
  9.     formSuma.addEventListener( formSuma.eventType.value, function(){
  10.         console.log( "eo" );
  11.     });
  12. });
Sin embargo, independientemente del valor de select el formulario siempre responde en caso de hacer un submit. Dejo también el ejemplo en jsfiddle: http://jsfiddle.net/ESdav/

¿Alguien sabría cuál es el problema? Gracias!
__________________
github.com/xgbuils | npm/xgbuils
  #2 (permalink)  
Antiguo 15/02/2014, 02:34
 
Fecha de Ingreso: julio-2006
Ubicación: Barcelona
Mensajes: 244
Antigüedad: 17 años, 9 meses
Puntos: 32
Respuesta: Cambiar modo de interacción interactivamente

Vaya! que poco inspirado estaba ayer.

Por un lado, para producir algun cambio tras cambiar la selección el código de interés lo debería haber puesto dentro de:
Código Javascript:
Ver original
  1. formSuma.eventType.addEventListener( "change", function(){
  2. ...
  3. });

Por otro lado, añadir un evento nuevo a un elemento no quita el anterior. Debería usar removeEventListener. Con todo ello así quedaría el código javascript:
Código Javascript:
Ver original
  1. function hola(){
  2.     alert("hola");
  3. }
  4.  
  5. window.addEventListener( "load", function(){
  6.    
  7.     /* exercici 1 */
  8.     var formSuma  = document.forms.suma;
  9.     var prev = formSuma.eventType.value;
  10.     formSuma.addEventListener( prev, hola );
  11.  
  12.     formSuma.eventType.addEventListener( "change", function(){
  13.         formSuma.removeEventListener( prev, hola );
  14.         formSuma.addEventListener( formSuma.eventType.value, hola );
  15.         prev = formSuma.eventType.value;
  16.     });    
  17. });

Dejo el tema como solucionado pero accepto cualquier consejo si se puede mejorar.

Un saludo!
__________________
github.com/xgbuils | npm/xgbuils

Etiquetas: formulario, html, input, interacción, js, modo, valor
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:00.