[RESOLVIDO] Formatador de Moedas

Pessoal…

Estava procurando por algum JS que formatasse um determinado valor (R$) através do OnKeyPress… E encontrei vários, porém anão aceitam a DTD q estou utilizando, alguem saberia pq?
O código é o seguinte:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
    <header>
        <meta HTTP-EQUIV=\"Pragma\" CONTENT=\"no-cache\">

        <SCRIPT LANGUAGE="JavaScript">

           <!-- Adaptado por Jesus - jesusatjavafree.com.br-->  
           <!-- Original:  Mario Costa (mariocosta@openlink.com.br) -->   
   
           <!-- This script and many more are available free online at -->   
           <!-- The JavaScript Source!! [url]http://javascript.internet.com[/url] -->   

            function formatarMoeda(fld, milSep, decSep, e) {

                //alert(fld, milSep, decSep, e);
				
                var sep = 0;

                var key = '';
                var i = j = 0;
                var len = len2 = 0;
                var strCheck = '0123456789';
                var aux = aux2 = '';
                var whichCode = (window.Event) ? e.which : e.keyCode;
                if (whichCode == 13) return true;  // Enter
                key = String.fromCharCode(whichCode);  // recebe o valor da chave vinda da chave do código

                if (strCheck.indexOf(key) == -1) return false;  // Chave não válida
                len = fld.value.length;
                for(i = 0; i < len; i++)
                    if ((fld.value.charAt(i) != '0') && (fld.value.charAt(i) != decSep)) break;
                aux = '';
                for(; i < len; i++)
                    if (strCheck.indexOf(fld.value.charAt(i))!=-1) aux += fld.value.charAt(i);
                aux += key;
                len = aux.length;
                if (len == 0) fld.value = '';
                if (len == 1) fld.value = '0'+ decSep + '0' + aux;
                if (len == 2) fld.value = '0'+ decSep + aux;
                if (len > 2) {
                    aux2 = '';
                    for (j = 0, i = len - 3; i >= 0; i--) {
                        if (j == 3) {
                            aux2 += milSep;
                            j = 0;
                        }
                        aux2 += aux.charAt(i);
                        j++;
                    }
                    fld.value = '';
                    len2 = aux2.length;
                    for(i = len2 - 1; i >= 0; i--)
                    fld.value += aux2.charAt(i);
                    fld.value += decSep + aux.substr(len - 2, len);
                }
                return false;
            }
            //  End -->
        </script>

    </header>
    <link href="../imagens/site/chat.css" rel="stylesheet" type="text/css">
    <body>


    </p>
    &lt;form&gt;
        Enter Value:
        &lt;input type=text name=test size="15" onKeyPress="return(formatarMoeda(this, '.', ',', event))"&gt;
    &lt;/form&gt;  
    <p >&nbsp;</p>
&lt;/body&gt;

&lt;/html&gt;

Outro detalhe importante:
no firefox funciona cetinho usando esta dtd, mas no IE não.

Consegui resolver meu problema, utilizando outro JS, uma vez que o q postei anteriormente não estava sendo validado corretamente pela dtd:

eis o código:


&lt;script&gt;
function BloqueiaLetras(evento, textField)
{
var tecla;
var campo = textField.value;

    if(window.event) { // Internet Explorer
        tecla = event.keyCode;
    }
    else { // Firefox
        tecla = evento.which;
    }

  if(tecla &gt;= 48 && tecla &lt;= 57 || tecla == 8)
  {
      FormataValor(campo, 10, tecla, textField);
  }
  else
      return false;
}

function FormataValor(valor,tammax,tecla, campo) {
        if (tecla &gt;= 48 && tecla &lt;= 57)
        {
            vr = valor;
            vr = vr.toString().replace( &quot;/&quot;, &quot;&quot; );
            vr = vr.toString().replace( &quot;/&quot;, &quot;&quot; );
            vr = vr.toString().replace( &quot;,&quot;, &quot;&quot; );
            vr = vr.toString().replace( &quot;.&quot;, &quot;&quot; );
            vr = vr.toString().replace( &quot;.&quot;, &quot;&quot; );
            vr = vr.toString().replace( &quot;.&quot;, &quot;&quot; );
            vr = vr.toString().replace( &quot;.&quot;, &quot;&quot; );
            tam = vr.length;

            if (tam &lt; tammax && tecla != 8){ tam = vr.length + 1; }

            if (tecla == 8 ){ tam = tam - 1; }

            if ( tecla == 8 || tecla &gt;= 48 && tecla &lt;= 57 || tecla &gt;= 96 && tecla &lt;= 105 )
            {
                if ( tam &lt;= 2 )
                {
                    campo.value = vr;
                }
                if ( (tam &gt; 2) && (tam &lt;= 5) )
                {
                    campo.value = vr.substr( 0, tam - 2 ) + ',' + vr.substr( tam - 2, tam );
                }
                if ( (tam &gt;= 6) && (tam &lt;= 8) )
                {
                    campo.value = vr.substr( 0, tam - 5 ) + '.' + vr.substr( tam - 5, 3 ) + ',' + vr.substr( tam - 2, tam );
                }
                if ( (tam &gt;= 9) && (tam &lt;= 11) )
                {
                    campo.value = vr.substr( 0, tam - 8 ) + '.' + vr.substr( tam - 8, 3 ) + '.' + vr.substr( tam - 5, 3 ) + ',' + vr.substr( tam - 2, tam );
                }
                if ( (tam &gt;= 12) && (tam &lt;= 14) )
                {
                    campo.value = vr.substr( 0, tam - 11 ) + '.' + vr.substr( tam - 11, 3 ) + '.' + vr.substr( tam - 8, 3 ) + '.' + vr.substr( tam - 5, 3 ) + ',' + vr.substr( tam - 2, tam );
                }
                if ( (tam &gt;= 15) && (tam &lt;= 17) )
                {
                    campo.value = vr.substr( 0, tam - 14 ) + '.' + vr.substr( tam - 14, 3 ) + '.' + vr.substr( tam - 11, 3 ) + '.' + vr.substr( tam - 8, 3 ) + '.' + vr.substr( tam - 5, 3 ) + ',' + vr.substr( tam - 2, tam );
                }
            }
        }
}
&lt;/script&gt;

e no evento onKeyPress coloquei:

onKeyPress="return BloqueiaLetras(event,this)"

Flw