miércoles, 8 de septiembre de 2010

Ejecutar OnChange sin perder el foco

El evento OnChange de los campos de un formulario de Dync CRM tienen una peculariedad ... el evento se ejecuta cuando se pierde el foco. Este detalle podría crearnos ciertas dificultades para lo cual tendríamos que forzar a que dicho evento se ejecute inmediatamente después de cambiar su valor y no después que se haya perdido el foco del campo. Veamos el siguiente ejemplo:
ESCENARIO
Se tiene el campo checkbox "valor" y un campo de caja de texto "descripcion". El campo "descripcion" deberá estar deshabilitado a menos que se haya seleccionado el campo "valor".

SOLUCION FALLIDA
En el evento OnChange de "valor" colocar:
if(crmForm.all.valor.DataValue==true)
   crmForm.all.descripcion.Disabled=false;
La opción arriba mencionda funciona sí y sólo sí luego de haber colocado un check en el campo "valor" se da un clic en cualquier otra parte del formulario o si se presiona la tecla TAB.

Para lograr nuestro cometido emplearemos "attachEvent" y que se ejecute en el momento que se haga check en "valor"
SOLUCION CORRECTA
En el evento OnLoad del formulario colocaremos lo siguiente 
function MiFuncion(){
   if(crmForm.all.valor.DataValue==true)
      crmForm.all.descripcion.Disabled=false;
}
crmForm.all.valor.attachEvent('onclick',MiFuncion);

No hay comentarios:

Publicar un comentario