none
Mascara en campos de CRM 2011 RRS feed

  • Pregunta

  • Hola, existe algún codigo para ponerle mascaras a algunos campos en CRM 2011, por ejemplo en el campo de telefono que tenga el siguiente formato en el campo: ####-####.

    En CRM 4.0 utilice este código pero al querer convertirlo a CRM 2011 no me esta funcionando, por favor si pudieran ayudarme. Muchas Gracias.

    CRM 4.0

    if (crmForm.FormType != 1 || crmForm.FormType == 1)
    {
    function OnCrmPageLoad()  
    {  
    Mask( "telephone1" , "####-####" );  
    Mask( "telephone2" , "####-####" );
    Mask( "sic" , "#-###-######-###" );  

     
     
    function Mask( fieldId , mask )  
    {  
    field = document.getElementById(fieldId);  
    field.mask = mask.split("");  
    field.regex = new RegExp(escapeRegEx(mask.replace(/#/gi,"").split("")),"gi");  
    field.title += " " + mask;  
    field.attachEvent( "onchange" , MaskOnFieldChange );  

     
    function escapeRegEx( chars )  
    {  
    var regChars = "+_)(*^$[]-?{}"; //Add all regexp chars id needed  
    var regExprs = "";  
    var run2Index = chars.length - 1; 
     
    for( var i = 0 ; i < run2Index ; i++ ) Concat( chars[i] , "|" ); 
     
     
    Concat(chars[run2Index]);  
     
     
    function Concat( c , d ){  
    regExprs += (( regChars.indexOf(c) != -1 )? "\\":"" ) + c + d;  

     
    return regExprs;  

     
     
    function MaskOnFieldChange()  
    {  
    var field = event.srcElement;  
    if( field.DataValue == null ) return;  
     
    var arrDataValue = field.DataValue.replace(field.regex,"").split("");  
    var arrResult = []; 
     
    for(var i=0 , j=0 ; i < field.mask.length ;i++)  
    arrResult[i] = (field.mask[i] != "#")?field.mask[i]:arrDataValue[j++]; 
     
    field.DataValue = arrResult.join("");  

     
    OnCrmPageLoad();
    }

     

    CRM 2011

    if (Xrm.Page.ui.getFormType() != 1 || Xrm.Page.ui.getFormType() == 1)
    {
    function OnCrmPageLoad()  
    {  
    Mask( "telephone1" , "####-####" );  
    Mask( "telephone2" , "####-####" );
    Mask( "sic" , "#-###-######-###" );  

     
     
    function Mask( fieldId , mask )  
    {  
    field = document.getElementById(fieldId);  
    field.mask = mask.split("");  
    field.regex = new RegExp(escapeRegEx(mask.replace(/#/gi,"").split("")),"gi");  
    field.title += " " + mask;  
    field.attachEvent( "onchange" , MaskOnFieldChange );  

     
    function escapeRegEx( chars )  
    {  
    var regChars = "+_)(*^$[]-?{}"; //Add all regexp chars id needed  
    var regExprs = "";  
    var run2Index = chars.length - 1; 
     
    for( var i = 0 ; i < run2Index ; i++ ) Concat( chars[i] , "|" ); 
     
     
    Concat(chars[run2Index]);  
     
     
    function Concat( c , d ){  
    regExprs += (( regChars.indexOf(c) != -1 )? "\\":"" ) + c + d;  

     
    return regExprs;  

     
     
    function MaskOnFieldChange()  
    {  
    var field = event.srcElement;  
    if( field.getValue() == null ) return;  
     
    var arrDataValue = field.getValue().replace(field.regex,"").split("");  
    var arrResult = []; 
     
    for(var i=0 , j=0 ; i < field.mask.length ;i++)  
    arrResult[i] = (field.mask[i] != "#")?field.mask[i]:arrDataValue[j++]; 
     
    field.setValue(arrResult.join(""));  

     
    OnCrmPageLoad();
    }

    viernes, 15 de abril de 2011 19:57

Respuestas

  • Hola LuciaFT, ten en cuenta que los javascript en CRM 2011 se llaman de forma diferente.

    Primero tienes que crear la librería general y luego hacer las llamadas desde los "onchange" de los objetos.

    yo creo que lo que te puede estar dando problemas son algunas lineas en la funcion "Mask()" que no estan soportadas:

    document.getElementById(fieldId);  

    field.attachEvent( "onchange" , MaskOnFieldChange );  

    prueba hacer esto de otra manera soportada y seguramente te funcione. sino depura el javascript utilizando las herramientas del internet explorer 8.0 (presionando el F12 del teclado se puede activar).

    espero te sirva, un saludo


    Demian Adolfo Raschkovan Blog: http://crmtoall.blogspot.com
    sábado, 16 de abril de 2011 7:58
    Moderador