Buen dia, estoy teniendo un problema en un proyecto desarrollado con Toba 2.3.0 y Postgres 8.4, dentro de un formulario tengo un ef_combo, que es cargado por un método en el dao, de tal forma que de acuerdo al item que selecciona muestra u oculta ciertos ef_editables del formulario. El campo que determina lo que oculto y lo que no esta en la tabla por lo que hago una llamada desde javascript a un metodo en el ci, el cual se comunica a traves del dao con la base de datos, devuelvo este resultado a javascript y en base a este oculto o no los campos. El problema es que quiero borrar el contenido de los ef que voy a ocultar, he probado utilizar los métodos resetar_estado(), set_estado(’ ‘) y set_estado(’') obteniendo siempre el mensaje de error “Error JS: RangeError: Maximum call stack size exceeded” en el navegador Chromium y el error “Error JS: InternalError: too much recursion” en el navegador Firefox 14. He revisado varias veces el código y es similar a otros proyectos hechos en las versiones 2.1 y 2.2 no presentando problemas.
//Este es el código que utilizo en el procesar del combo (JS)
//---- Procesamiento de EFs --------------------------------
{$this->objeto_js}.evt__id_tipoempresa__procesar = function(es_inicial)
{
var id_tipoempresa = this.ef('id_tipoempresa').get_estado();
if (id_tipoempresa != 'nopar') {
this.controlador.ajax('get_datos_tipoempresa', id_tipoempresa, this, this.actualizar_datos_tipoempresa);
}
}
//Este es el código es el que utilizo en el ci (PHP)
//-----------------------------------------------------------------------------------
//---- Funciones AJAX----------------------------------------------------------------
//-----------------------------------------------------------------------------------
function ajax__get_datos_tipoempresa($id_tipoempresa, toba_ajax_respuesta $respuesta)
{
$contenido = ' id_tipoempresa = ' . $id_tipoempresa;
$datos = dao_padron_general::get_gen_tiposempresa($contenido);
if (isset($datos[0]['es_personafisica'])) {
if (($datos[0]['es_personafisica']) == 'true') {
$resultado = 'SI';
} else {
$resultado = 'NO';
}
}
$respuesta->set($resultado);
}
//Este es el código que utilizo para procesar el resultado y mostrar o no los campos (JS)
//---- Pregunto si es empresa o no y oculto o no los campos--------------------
{$this->objeto_js}.actualizar_datos_tipoempresa = function(tipoempresa)
{
if (tipoempresa == 'SI'){
this.ef('razonsocial_empresa').resetear_estado();
this.ef('razonsocial_empresa').ocultar();
this.ef('fechainicio_empresa').ocultar();
this.ef('idtipo_documento').mostrar();
this.ef('dni_persona').mostrar();
this.ef('apellido_persona').mostrar();
this.ef('nombres_persona').mostrar();
this.ef('fecha_nacimiento').mostrar();
this.ef('sexo_persona').mostrar();
this.controlador.dep('frm_ml_parentescos').mostrar();
} else {
this.ef('idtipo_documento').ocultar();
this.ef('dni_persona').ocultar();
this.ef('apellido_persona').ocultar();
this.ef('nombres_persona').ocultar();
this.ef('fecha_nacimiento').ocultar();
this.ef('sexo_persona').ocultar();
this.controlador.dep('frm_ml_parentescos').ocultar();
this.ef('razonsocial_empresa').mostrar();
this.ef('fechainicio_empresa').mostrar();
}
}
Adjunto debajo las capturas de los mensajes de error arrojados por los navegadores.
Desde ya muchas gracias por su ayuda. Saludos