Ver Mensaje Individual
  #5 (permalink)  
Antiguo 26/02/2015, 16:27
Mental
 
Fecha de Ingreso: noviembre-2005
Mensajes: 146
Antigüedad: 18 años, 5 meses
Puntos: 1
Respuesta: Formulario array indice desde el que llamo

Hola:
Solucionado el problema que genero este post.
Seguí la recomendación primera de Alexis88, recorrer los formularios actualizándolos, pero incluí un parametro en el Select de manera que el primer elemento del arrary es un número sí el select ha sido modificado. Así en el bucle si el parametro no está, lo obvia y pasa al siguiente.
Os dejo el código por si sirve de orientación a alguien. Es la función a la que llamo desde el formulario. En este caso hay un formulario de actualización y otro de adición de registro. Ambos llaman a la misma función y esta actua de una u otra manera.
De nuevo mi agradecimiento a Alexis88. Aunque seguire solicitando ayuda. Esto aún no ha acabado.
Código Javascript:
Ver original
  1. function seleccionar_servicios(clicked_id)
  2.     {
  3.             //Obtenemos el id desde el que se hace la llamada al eventno
  4.             var select = document.getElementById(clicked_id); //El <select>
  5.             valor = select.value; //El valor de la opción seleccionada
  6.             //Establezo dos posibilidades de uso: .innerText e .textContent ya que firefox no funciona con .innertText.
  7.             contenido1     = select[select.selectedIndex].innerText;
  8.             contenido2     = select[select.selectedIndex].textContent;
  9.             //Esta condición es por si al usar firefox .innerText no es intrepretado por Firefox y devuelve undefined.
  10.             if(contenido1 != undefined){var_objeto = contenido1}else{var_objeto = contenido2};
  11.             //Condicionamos la ejecución del código en función de que el clicked_id sea "S" que supone modificar registro que existe
  12.             // o sea "A" que es agregar un resgistro nuevo.
  13.             if(clicked_id.substring(0, 1) == 'S')
  14.                 {
  15.                         //Trabajamos con DOM para saber cuantos formularios hay. El primero y el último no se afectan por este código.
  16.                         //Sólo para los registros que son del formulario "solicitudes".
  17.                         //Número de formularios que hay.
  18.                         var num_forms = document.forms.length;
  19.                         //Descartamos el primero y el último.
  20.                         for(i=1; i<num_forms -1 ; i++)
  21.                         {
  22.                             //Seleccionamos el select que contiene los servicios.
  23.                             var select = document.forms[i].elements[2];
  24.                             //Obtenemos el texto que hay en el registro. Dos funciones para diferentes explorer.
  25.                             contenido1 = select[select.selectedIndex].innerText;
  26.                             contenido2 = select[select.selectedIndex].textContent;
  27.                             if(contenido1 != undefined){var_objeto = contenido1}else{var_objeto = contenido2};
  28.                             //Generamos el array palabras, que distingue por la "," el contenido procedente de la option value.
  29.                             var palabras = var_objeto.split(",")
  30.                             //Distinguimos el formulario sobre el que actuar a través de la existencia de un número en el primer
  31.                             //elemento del array palabras.
  32.                             if(!isNaN(palabras[1]))
  33.                             {
  34.                                 //Verificamos si el servicio es para grupo o inidividual y asignamos valor.
  35.                                 if(palabras[3] === '2')
  36.                                     {
  37.                                     var_usuario = 1;
  38.                                     document.forms[i].elements[4].value  = var_usuario;
  39.                                     }
  40.                                 else
  41.                                     {
  42.                                     //Asignamos a la variable la duración el numero de usuarios del servicio
  43.                                     //Valor recogido en el formulario principal.
  44.                                     var_usuario = document.getElementById(4).value;
  45.                                     document.forms[i].elements[4].value = var_usuario ;
  46.                                     }
  47.                                 //Asignamos a la variable la duración del evento(días)
  48.                                 //Valor recogido en el formulario principal.   
  49.                                 var_tiempo  = document.getElementById(7).value;
  50.  
  51.                                 document.forms[i].elements[2].value  = palabras[2];
  52.                                 document.forms[i].elements[3].value  = var_tiempo;
  53.                                 document.forms[i].elements[8].value  = palabras[4];
  54.                                 document.forms[i].elements[9].value  = palabras[5];
  55.                                 document.forms[i].elements[10].value = palabras[4]* var_usuario * var_tiempo;
  56.                                 document.forms[i].elements[11].value = palabras[5]* var_usuario * var_tiempo;
  57.                                 document.forms[i].elements[12].value = palabras[6];
  58.                             }
  59.                            
  60.                         }
  61.  
  62.                 }
  63.             //Este es para la opción de agregar registro.
  64.             else if(clicked_id.substring(0, 1) == 'A')
  65.                 {
  66.                     var_prefijo = "A";
  67.                     var_usuario = "A05";
  68.                     var_tiempo  = "A04";                   
  69.  
  70.                     //Convierto en array con .split() el resultado obtenido para la variable objeto.
  71.                     var palabras = var_objeto.split(",");
  72.                                 //Verificamos si el servicio es para grupo o inidividual y asignamos valor.
  73.                                 if(palabras[2] === '2')
  74.                                     {
  75.                                     var_usuario = 1;
  76.                                     document.getElementById(var_prefijo + "05").value = var_usuario;
  77.                                     }
  78.                                 else
  79.                                     {
  80.                                     //Asignamos a la variable la duración el numero de usuarios del servicio
  81.                                     //Valor recogido en el formulario principal.                                       
  82.                                     var_usuario = document.getElementById(4).value;
  83.                                     document.getElementById(var_prefijo + "05").value = var_usuario ;
  84.                                     }
  85.                                 //Asignamos a la variable la duración del evento(días)
  86.                                 //Valor recogido en el formulario principal
  87.                                 var_tiempo  = document.getElementById(7).value;
  88.  
  89.                     document.getElementById(var_prefijo + "03").value = palabras[1];
  90.                     document.getElementById(var_prefijo + "04").value = var_tiempo;
  91.                     document.getElementById(var_prefijo + "09").value = palabras[3];
  92.                     document.getElementById(var_prefijo + "10").value = palabras[4];
  93.                     document.getElementById(var_prefijo + "11").value = palabras[3] * var_usuario * var_tiempo;
  94.                     document.getElementById(var_prefijo + "12").value = palabras[4] * var_usuario * var_tiempo;
  95.                     document.getElementById(var_prefijo + "13").value = palabras[5];   
  96.                 }
  97.     }