Gente, buen día, tengo el siguiente problema, tengo un CI el cual contiene 2 formularios, el segundo debe aparecer según si el primero trae datos (en el primer form busco datos mediante ajax). Estuve buscando una solución en el foro pero solo encontré esto.
la solucion que se planteaba ahi, era ocultar el formulario directamente en el servidor, ya que se sabia de antemano como se estaba comportando la operacion, en ese caso solo debia pasar en el alta.
En tu caso, se podria aplicar algo similar… salvo que los datos que recuperas via ajax no los conozcas al momento de viajar al cliente con la pantalla.
En dicho caso, tendrias que poder ocultar el formulario via API JS. Sin embargo, tene en cuenta que sus datos viajaran al servidor de todas maneras en el POST y por tanto, deberias realizar alli un nuevo control para saber si deberias descartarlos o utilizarlos.
el metodo que invocas es el correcto, el problema me parece que esta en el scope de la llamada. El evt procesar del campo apellido se va a disparar dentro del scope del formulario, como lo tenes definido vos… esa funcion queda dentro del scope del CI, que esta por fuera y por tanto no se va a llamar nunca.
Por otra parte, los formularios estan a igual altura, asi que para ir de uno a otro, necesitas pasar por el controlador… no hay una referencia directa. Entonces tu llamada a this.dep, necesariamente tiene que subir hasta el padre y luego bajar.
Dicho de otra manera, si lo queres tener a nivel de CI, deberias hacer algo asi:
Dependiendo del ingreso de nro. de identificación dentro del formulario si ya existe, necesito dejar el formulario completo de solo lectura, pero veo que para JS no se encuentra el método set_solo_lectura (true), me toca ef x ef ? como es una encuesta son demasiados campos, me vendría algo así como this.controlador.dep(‘form_recurso’).set_solo_lectura();
Que solución me puedes dar a este caso ? ya que dejar la validación para el final sería un contrasentido porque se perdería todo el trabajo del formulario.
Richard, una consulta más sobre este tema, en el caso que quiera ocultar/mostrar el evento guardar, del CI que contiene los formularios, cómo se hace esto? Porque había visto una vez que se podía eliminar_evento() de una pantalla, pero yo no lo quiero eliminar, solamente ocultar. Esto se puede?
Richard, depende de los valores del RunTime, la idea es la siguiente, en el primer formulario se ingresa un DNI y se busca la persona, si la encuentra habilita el segundo formularo para que termine de cargar los datos. En caso de que no lo encuentre no muestra el segundo formulario y debería ocultar o deshabilitar el botón Guardar. Lo que tengo actualmente es lo siguiente:
if (estado == ' '){
this.dep('form_recurso').ocultar();
this.dep('form_recurso').desactivar_boton('procesar');
}else{
this.dep('form_recurso').mostrar();
}
La línea formulario.ocultar() funciona bien, pero tengo dudas sobre el boton. Así esta bien o lo tengo mal definido?