13 feb 2014

MSCRM Cómo Crear un Campo de Tipo Password con JavaScript

Dynamics CRM no tiene la posibilidad de añadir campos de contraseña (Password) a un formulario. Con este script , mostramos una manera de cambiar el tipo de campo para que se pueda usar como campo de contrase­ña.

OGBIT.PasswordField = {
    Init: function (fields) {

        var ids = fields.split(';');
        for (var idx in ids) {
            var id = ids[idx];
            var control = document.getElementById(id);
            if (control && typeof (control) != "undefined") {
                control.setAttribute("type", "password");
                OGBIT.PasswordField.Show(id, true);
            }                           
        }       
    },
    Show: function (id, cmd) {
        var control = Xrm.Page.getControl(id);
        if (control)
            control.setVisible(cmd);
    }
}

La función Init toma un texto delimitado por punto y coma con los identificadores de campo. A cada campo, le cambiamos el atributo del campo a tipo Password. Esto automáticamente enmascara el texto en el campo con asteriscos (*), y los valores de los caracteres reales no son afectados. Dado que existe una demora entre el JavaScript cambiando el tipo de campo y el formulario de presentación de los valores , tenemos que ocultar inicialmente el campo en el formulario. Esto evita que los usuarios vean el texto real . Este script utiliza el framework XRM JavaScript para obtener la referencia de campo y establecer el atributo de visibilidad a TRUE después de cambiar el tipo de campo. Consulte la función Show para más detalles.

Para hacer trabajar esto en CRM, puedemos añadir este script como un recurso web y configurarlo en el evento OnLoad del formulario. Despues podemos añadir un STRING con los nombres de los campos que se deben cambiar. Este STRING es pasado como parametro a la function Init.

Debemos tener en cuenta que esta solución tiene una limitación . Si nos fijamos en el código fuente HTML , verá el valor real de la contraseña. Si esto no es deseable, hay que hacer trabajo adicional. Una manera puede ser de que nunca se incluya el campo real en la forma y manejar la actualización a través de los servicios web de OData.
Espero que encuentren este articulo útil.