Buenos días, tengo el requerimiento de un usuario que consiste en que el foco inicial en el formulario de carga de datos este sobre el primer elemento, que en este caso es un ef_combo, por alguna razón al cargar el formulario me posiciona el foco en el primer elemento que NO sea ef_combo, en este caso un ef_editable. Hay posibilidad de modificar este comportamiento y que el foco inicial respete el orden en el que se encuentran los elementos, ubicando el foco en este ef_combo? Desde ya muchas gracias. Saludos.
Hola Facundo,
por defecto se coloca el foco en el primer elemento que es editable y cuya principal interaccion es el teclado, dicho de otra manera, campos de texto.
La principal forma de interaccion con un combo, no es el teclado sino mas bien el mouse ya que para desplegarlo, debes seleccionarlo. Por ello es que no se le asigna el foco de entrada, aun cuando lo tuviera irias con el mouse a desplegarlo para seleccionar el valor.
En cualquier caso, esta asignacion se realiza en el onload de la pagina, vos podrias cambiarlo redefiniendo la funcion que se llama en dicho caso.
Saludos
Buenas noches, gracias Richard por la respuesta, pongo el paso a paso de lo que hicimos para que funcione:
En primer lugar editamos el archivo /toba_2_4/www/js/basicos/basico.js, reemplazando la funcion “firstFocus”, reemplazando la linea donde compara que sea text o textarea, quedando asi:
function firstFocus()
{
for (var i=0; i< document.forms.length; i++) {
var formulario = document.forms[i];
for (var j=0;j<formulario.length;j++) {
var elemento = formulario.elements[j];
var display = elemento.style.display;
var solo_lect_attrib = isset(elemento.getAttribute('readonly'));
if (ie){solo_lect_attrib = elemento.getAttribute('readonly');}
if ((elemento.getAttribute('tabindex')==1) && (!elemento.disabled) && ( display != 'none') && ( display != 'hidden') && (! solo_lect_attrib)) {
var error =false;
try {
elemento.focus();
} catch(e) {
error = true;
}
if (!error) {return;}
}
}
}
}
Esto de alguna manera forza el foco al tabindex 0, para que tome los combos, lo que hicimos fue en el evento procesar de los efs de tipo combo que estan ubicados en primer lugar, cuando “es_inicial” es verdadero, ponemos el tabindex en 1, y voila. Un ejemplo de la funcion que pusimos en la extension del frm es la siguiente:
{$this->objeto_js}.evt__idtipo_norma__procesar = function(es_inicial)
{
if (es_inicial) {
this.ef('idtipo_norma').set_tab_index(1);
}
}
Saludos