Foros del Web » Programando para Internet » Javascript »

Ayuda en una Function

Estas en el tema de Ayuda en una Function en el foro de Javascript en Foros del Web. Hola: Estoy generando dinamicamente una tabla en donde aparecen los datos de ciertos productos. Por cada fila de tabla agrego los datos del producto junto ...
  #1 (permalink)  
Antiguo 05/05/2004, 11:03
 
Fecha de Ingreso: julio-2002
Ubicación: Rancagua - Chile
Mensajes: 494
Antigüedad: 21 años, 9 meses
Puntos: 0
Ayuda en una Function

Hola:
Estoy generando dinamicamente una tabla en donde aparecen los datos de ciertos productos.
Por cada fila de tabla agrego los datos del producto junto con un select y cuadro de texto que en principio esta disabled.
La idea es que dependiendo de la opcion seleccionada en el select de cada fila se habilite el correspondiente cuadro de texto y se pueda agregar una observación.

Ya tengo la funcion que me va validando cada valor obtenido en cada select, pero no se como agregar alguna funcion que valide que realmente se ingresaron datos en el cuadro de texto y que estos no queden vacios.

Aca esta lo que he hecho :

Código PHP:
for($i=0;$i<$fil;$i++)                      { ?>
                      <tr> 
<td align="center" class="texto12" 
onmouseover='this.style.background="#666699"' onmouseout='this.style.background="white"'><a 
href="javascript:popup_2(<? echo $lst_prod_vta[$i][0]; ?>);"><? echo $lst_prod_vta[$i][1];?></a></td>
                        <td align="center" class="texto12"><? echo $lst_prod_vta[$i][2];?></td>

                        <td align="center" class="texto12"><? echo $lst_prod_vta[$i][3];?></td>

                        <td align="center" class="texto12"><select name="cbopeticion<?php print($i)?>" class="texto12" 
onChange="validar_accion(this, document.frm.txtrechazo<?php print($i)?>);">
                            <option value="0" 
selected>Seleccione</option>
                            <option value="1">Petici&oacute;n Valida</option>

                            <option value="2">Petici&oacute;n 
Rechazada</option>
                          </select></td>
                        <td align="center" class="texto12"><input 
name="txtrechazo<?php print($i)?>" type="text" class="texto12" size="20" maxlength="50" disabled></td>
                      </tr>
                      <? ?>
                    </table>

<script>
function validar_accion(objeto, texto){    
    if(objeto.value == 2){
        texto.disabled=false;
        texto.focus ();
        return true;
    }else{
        texto.disabled=true;
        texto.value="";
        return true;
    }
    
}    
</script>
Por si no se entiende bien, hago un for y por cada iteración creo una fila de la tabla con su respectivo select y el cuadro de texto deshabilitado, y dependiendo del valor del select se ejecuta la funcion validar_accion a la que le paso los parametros "this" que corresponde al select y document.frm.txtrechazo<?php print($i)?> que corresponde al nombre del objeto que voy a habilitar.

Espero que se entienda.
Gracias.

Salu2 !!!
__________________
AK.T.I.V.E.tm Live, Never DIE

Última edición por KillerBKS; 05/05/2004 a las 11:04
  #2 (permalink)  
Antiguo 06/05/2004, 21:25
 
Fecha de Ingreso: julio-2002
Ubicación: Rancagua - Chile
Mensajes: 494
Antigüedad: 21 años, 9 meses
Puntos: 0
Ayuda Por favor MAESTROS !!!!!


Gracias.

Salu2 !!!
__________________
AK.T.I.V.E.tm Live, Never DIE
  #3 (permalink)  
Antiguo 07/05/2004, 02:06
Avatar de JavierB
Colaborador
 
Fecha de Ingreso: febrero-2002
Ubicación: Madrid
Mensajes: 25.052
Antigüedad: 22 años, 2 meses
Puntos: 772
Hola, KillerBKS.

Veamos si esto te orienta un poco:

Código PHP:
elem=document.frm.elements;
for(
i=0;i<elem.length;i++)
     if(
elem[i].type=="text" && !elem[i].disabled)
          if(
elem[i].value==''alert ('Esto está vacío'); 
Saludos,
  #4 (permalink)  
Antiguo 07/05/2004, 07:32
 
Fecha de Ingreso: julio-2002
Ubicación: Rancagua - Chile
Mensajes: 494
Antigüedad: 21 años, 9 meses
Puntos: 0
funciona, pero hace un for por todos los elementos del formulario, y solo necesito que revise los campos de texto con nombre "obs_rechazo<? echo $i;?>".

Se puede utilizar algo asi como elem[i].name=="obs_rechazo"
o no?

Gracias.

Salu2 !!!
__________________
AK.T.I.V.E.tm Live, Never DIE
  #5 (permalink)  
Antiguo 07/05/2004, 10:17
Avatar de JavierB
Colaborador
 
Fecha de Ingreso: febrero-2002
Ubicación: Madrid
Mensajes: 25.052
Antigüedad: 22 años, 2 meses
Puntos: 772
Hola de nuevo.

Cambia: elem=document.frm.elements;

por: elem=frm.getElementsByName('obs_rechazo');

Saludos,

Última edición por JavierB; 07/05/2004 a las 10:19
  #6 (permalink)  
Antiguo 07/05/2004, 14:10
 
Fecha de Ingreso: julio-2002
Ubicación: Rancagua - Chile
Mensajes: 494
Antigüedad: 21 años, 9 meses
Puntos: 0
OK....Gracias.

Vamos a probar

Salu2 !!!
__________________
AK.T.I.V.E.tm Live, Never DIE
  #7 (permalink)  
Antiguo 12/05/2004, 14:32
 
Fecha de Ingreso: julio-2002
Ubicación: Rancagua - Chile
Mensajes: 494
Antigüedad: 21 años, 9 meses
Puntos: 0
Hice las modificaciones que me recomendaron, pero me arroja el siguiente error:
" El objeto no acepta esta propiedad o método "

Aca esta la función:
Código PHP:
function valida_campos(form)
{
     
elem=form.getElementsByName('obs_rechazo');
     
alert(elem);
     for(
i=0;i<elem.length;i++) {
          if(
elem[i].type=="text" && !elem[i].disabled) {
             if(
elem[i].value=='') { 
      
alert ('Esto está vacío');
      return 
false;
              }
          }
   }

Espero que sepan cual es el problema
Gracias

Salu2 !!!
__________________
AK.T.I.V.E.tm Live, Never DIE
  #8 (permalink)  
Antiguo 13/05/2004, 02:58
Avatar de JavierB
Colaborador
 
Fecha de Ingreso: febrero-2002
Ubicación: Madrid
Mensajes: 25.052
Antigüedad: 22 años, 2 meses
Puntos: 772
Hola, KillerBKS.

El código parece correcto. ¿En que línea te da el error?

Saludos,
  #9 (permalink)  
Antiguo 13/05/2004, 09:15
 
Fecha de Ingreso: julio-2002
Ubicación: Rancagua - Chile
Mensajes: 494
Antigüedad: 21 años, 9 meses
Puntos: 0
Despues de mucho pensar, llegue a una solución y funciona bien
Tal vez sirva para una FAQ , pero seguramente habria que replantear el problema.
Bueno, aca les dejo la funcion.
Código PHP:
function valida_campos(formnprod)
{
     for(
i=0;i<nprod;i++) {
     var 
a="";
     var 
b="";
     var 
c="";
     var 
d="";
     
a"frm.txtrechazo"+i+".disabled";
     
b"frm.txtrechazo"+i+".value";     
     
c"frm.txtrechazo"+i+".focus()";    
     
d"frm.cbopeticion"+i+".value"
     
e"frm.cbopeticion"+i+".focus()"
     if(eval(
d)==-1){
         
alert('Debe Validar todas las peticiones de Productos');
        eval(
e);
        return 
false;
     }
     
         if(eval(
a)==false){
             if((eval(
b)=="") && (eval(d)==0)) { 
                  
alert ('Debe indicar una observación al rechazo de la petición');
                eval(
c);
                  return 
false;
              }
          }
       }
    if(
form.tipo_vta.value==0)
        {
        
alert("Debe seleccionar el Tipo de Venta");
        
form.tipo_vta.focus();
        return 
false;
        }
    if(
form.exito.value==0)
        {
        
alert("Debe indicar la probabilidad de Éxito");
        
form.exito.focus();
        return 
false;
        }
        
return 
true;

En resumen, lo que hace es lo sigte:
Se generan filas de una tabla en forma dinamica, dependiendo de la cantidad de productos que tenga una venta. Cada producto debe ser validado, es decir, si la petición de ese producto corresponde o no, para lo cual se crea un combobox (select) que tiene los valores de 'Petición Valida' y 'Petición Rechazada'. Si es rechazada la petición se debe agregar una observación sobre el rechazo de ese producto en esa venta. Si el usuario no agrega una observación el script no continua, asi como tampoco continua si los valores del select son iguales a -1 que indica la opcion 'Seleccione' dentro del combo.
Espero que se entienda

Gracias por la ayuda

Salu2 !!!
__________________
AK.T.I.V.E.tm Live, Never DIE
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 07:19.