Foros del Web » Programando para Internet » Javascript »

[SOLUCIONADO] javascript onchange

Estas en el tema de javascript onchange en el foro de Javascript en Foros del Web. salu2. necesito obtener el id del un elemento que activo a una funcion.. eje. formulario: <form id="frm"> <input type="text" id="uno" /> <input type="text" id="dos" /> ...
  #1 (permalink)  
Antiguo 03/04/2013, 16:41
 
Fecha de Ingreso: abril-2013
Mensajes: 60
Antigüedad: 11 años, 1 mes
Puntos: 2
javascript onchange

salu2.

necesito obtener el id del un elemento que activo a una funcion.. eje.
formulario:

<form id="frm">
<input type="text" id="uno" />
<input type="text" id="dos" />
<input type="text" id="tres" />
<input type="text" id="cuatro" />
<input type="text" id="cinco" />
</form>

javascript:

<script>
this.onchange = prueba;

function prueba(id)
{
// q me diga que elemento del formulario llamo a esta funcion;
}
</script>

es un script generico, por lo tanto ninguna elemento tendra un onchange="". es decir: <input type="text" id="cinco" onchange="prueba(this.id)"/>

me dejo entender? ayuda porfa..
  #2 (permalink)  
Antiguo 03/04/2013, 18:09
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 16 años, 10 meses
Puntos: 1567
Respuesta: javascript onchange

No se entiende muy bien compañero
si
Cita:
ninguna elemento tendra un onchange
quien va a llamar a tu función?

A no ser que lo que quieras es hacer algo más o menos asi
Código HTML:
Ver original
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  2. "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  3. <html xmlns="http://www.w3.org/1999/xhtml">
  4. <title>inicio</title>
  5. <meta http-equiv="content-type" content="text/html; charset=utf-8" />
  6. <script type="text/javascript">
  7. //<![CDATA[
  8. function redirije(t){
  9. alert(t.title)
  10. }
  11.  
  12. window.onload = function(){
  13. var linksmenu = [];
  14. var contiene_links = document.getElementById('menu');
  15. linksmenu = contiene_links.getElementsByTagName('button');  
  16.    for (i=0; i<linksmenu.length; i++) {
  17.        if (linksmenu[i].addEventListener){
  18.        linksmenu[i].addEventListener("click", function(){redirije(this)}, false);
  19.        }else{ // <IE9
  20.            if (linksmenu[i].attachEvent){
  21.            linksmenu[i].attachEvent ("onclick", function () {redirije(this)});
  22.        }  
  23.        }
  24.    }
  25. }
  26. //]]>
  27. </head>
  28. <div id="menu">
  29. <button title="1">1</button><br />
  30. <button title="2">2</button><br />
  31. <button title="3">3</button><br />
  32. </div>
  33. </body>
  34. </html>

Es otro ejemplo. pero el concepto es más o menos el mismo, con addEventListener/attachEvent se agrega un evento onclick (vos deberías utilizar change y onchange) a todos los botones, inputs en tu caso, y este evento ejecuta la función redirije, y muestra el title (vos lo harías para el id), del elemento clickeado (ya que se pasa this como parámetro).

A propósito, bienvenido a FDW
Saludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #3 (permalink)  
Antiguo 04/04/2013, 06:58
 
Fecha de Ingreso: abril-2013
Mensajes: 60
Antigüedad: 11 años, 1 mes
Puntos: 2
Respuesta: javascript onchange

gracias por contestar..
el asunto es el siguiente, tengo formularios larguiiiiisimos.. y quiero hacer una función general, la cual me sirva para cualquier otro formulario.
dentro el formulario hay selects, radiobuttons,inputtex, etc

cuando se haga una modificacion en cualquier elemento del formulario ya sea en un select o inputtex o cualquier otro elemento... este campo debe llamar a una funcion y esta funcion recibir el id de este campo q la llamo.

al tratarse de un formulario extenso(minimo 50 elementos), no es recomendable ir poniendo el onchange="" a cada uno de estos elementos del formulario, ya que la idea es hacer lo mismo para mas de un formulario y mediante una funcion en javascript controlar eso, mas o menos algo asi:

<script>

myForm.onchange = prueba; // con esto cualquier elemento del formulario llama a la funcion

function prueba()
{
// obtiene el id del elemento del formulario que activo esta funcion
}
</script>

al ser una funcion generica, no deberia usar document.getElementById('menu') u otro q haga referencia a un campo en especifico, ya que este campo podria no existir en otro formulario
  #4 (permalink)  
Antiguo 04/04/2013, 09:21
 
Fecha de Ingreso: abril-2013
Mensajes: 60
Antigüedad: 11 años, 1 mes
Puntos: 2
Respuesta: javascript onchange

ya lo tengo hasta este punto, la función prueba() muestra el id, pero de todos los elementos de mi formulario, cuando solo debería mostrarme el id del elemento que tuvo un evento onchange

hay alguna forma de controlar que solo se llame a la funcion siempre y cuando en realidad el elemento sufra un evento onchange???

Código Javascript:
Ver original
  1. function prueba(id)
  2.        {
  3.        alert(id);
  4.        }
  5.  
  6.         var myForm =  document.getElementById("idForm");
  7.         var amount= myForm.length;
  8.  
  9.     for (var i=0;i< amount ;i++)
  10.       {
  11.           var formElement = myForm.elements[i];
  12.           var idformElement = myForm.elements[i].id;
  13.           formElement.onchange= prueba(idformElement);
  14.       }
  #5 (permalink)  
Antiguo 04/04/2013, 14:11
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 16 años, 10 meses
Puntos: 1567
Respuesta: javascript onchange

Cita:
Iniciado por marcelocuiza_de Ver Mensaje
ya lo tengo hasta este punto, la función prueba() muestra el id, pero de todos los elementos de mi formulario, cuando solo debería mostrarme el id del elemento que tuvo un evento onchange

hay alguna forma de controlar que solo se llame a la funcion siempre y cuando en realidad el elemento sufra un evento onchange???

Código Javascript:
Ver original
  1. function prueba(id)
  2.        {
  3.        alert(id);
  4.        }
  5.  
  6.         var myForm =  document.getElementById("idForm");
  7.         var amount= myForm.length;
  8.  
  9.     for (var i=0;i< amount ;i++)
  10.       {
  11.           var formElement = myForm.elements[i];
  12.           var idformElement = myForm.elements[i].id;
  13.           formElement.onchange= prueba(idformElement);
  14.       }
Tenés que usar addEvenListener/attachEvent y this, como te expliqué antes. Y si querés hacerlo para la posibilidad de que halla más de un form en la página, hacer 2 recursiones, la primera con getelementsByTagName('form'), y la segunda para cada elemento de cada form. (siempre y cuabdo el type no sea button ó submit, o un tag button si existiese.
En el caso de los campos de texto, el id va a recuperarse cuando le quites el foco, no antes.
Saludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #6 (permalink)  
Antiguo 04/04/2013, 15:07
 
Fecha de Ingreso: abril-2013
Mensajes: 60
Antigüedad: 11 años, 1 mes
Puntos: 2
Respuesta: javascript onchange

gracias viejo.... me sirvió de mucho tu ayuda

Etiquetas: formulario, funcion, input, onchange
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 10:20.