Formatação de Valor
12/05/2008
0
Alguém sabe como fazer isso com o Extender ou tem algum JavaScript que faça isso? Ou até qualquer outra solução que eu não tenha tentado ?!?
:?:
Hal9000
Posts
12/05/2008
Chanteelee
Um exemplo q eu fiz dia desses:
<asp:TextBox ID=´VL_INITIAL_p´ runat=´server´></asp:TextBox>
Essa é a input.
E agora vc coloca o MaskedEditExtender em algum lugar da pagina:
<cc1:MaskedEditExtender ID=´Mask_Initial´ runat=´server´ TargetControlID=´VL_INITIAL_p´ Mask=´9,999,999.99´ MaskType=´Number´ InputDirection=´RightToLeft´>
</cc1:MaskedEditExtender>
Entendendo o componente aê:
TargetControlID indica qual INPUT esse extender vai controlar
Mask vc indica como é a mascara... No caso ele ta regulado pra exibir 2 casas decimais ( por causa do . )
MaskType vc indica qual tipo de mascara. Ele funciona pra Data e outras coisas tb...
InputDirection é a direção =D
Mais informações sobre esse e outros componentes do Ajax:
http://www.asp.net/AJAX/AjaxControlToolkit/Samples/MaskedEdit/MaskedEdit.aspx
;)
13/05/2008
Hal9000
Fiz como você falou, olha só:
<asp:TextBox ID=´txtValMoeda´ runat=´server´></asp:TextBox>
<cc1:MaskedEditExtender ID=´MaskedEditExtender1´ runat=´server´
InputDirection=´RightToLeft´ Mask=´999999999,99´
TargetControlID=´txtValMoeda´ AutoComplete=´False´ ClearMaskOnLostFocus=´False´
CultureName=´pt-BR´ MaskType=´Number´ PromptCharacter=´ ´>
</cc1:MaskedEditExtender>
Mas as mascara só funciona assim: ´999999999,99´. se eu colocar ´9.999.999,99´ ou ´9,999,999.99´ A digitação só funciona pela esquerda
Outro problema que percebi quando chego no meu textbox pelo Tab a Mascara fica toda focada e ai digitação só pela Esquerda tb.
Se cliclo no textbox para apagar o foco a digitação vai bem (desde que a mascara seja ´9999999,99´ . Mas Se preciso pagar um valor com back space (por exemplo) ele deveria apagar o meu ultimo caracter da direta para esquerda certo? É mas não faz isso ele apaga o primeiro da esquerda para direita. Enfim... Pau total.
Será que tem algo mais que eu tenha que configurar? Habilitei até o Globalization no Script manager e Nada.
Alguem consegui fazer isso? Com Extender ou com Java Script? Eu to atras de um código javaScript que faça isso mas não achei nada ainda!
:(
13/05/2008
Ricardo Silva
// Formata Float centavos com ´,´ milhar com ´.´ function Limpar(valor, validos) {// retira caracteres invalidos da string var result = ""; var aux; for (var i=0; i < valor.length; i++) { aux = validos.indexOf(valor.substring(i, i+1)); if (aux>=0) { result += aux; } } return result; } //Formata número tipo moeda usando o evento onKeyDown function Formata(campo,tammax,teclapres,decimal) { var tecla = teclapres.keyCode; vr = Limpar(campo.value,"0123456789"); tam = vr.length; dec=decimal if (tam < tammax && tecla != 8){ tam = vr.length + 1 ; } if (tecla == 8 ){ tam = tam - 1 ; } if ( tecla == 8 || tecla >= 48 && tecla <= 57 || tecla >= 96 && tecla <= 105 ){ if ( tam <= dec ){ campo.value = vr ; } if ( (tam > dec) && (tam <= 5) ){ campo.value = vr.substr( 0, tam - 2 ) + "," + vr.substr( tam - dec, tam ) ; } if ( (tam >= 6) && (tam <= 8) ){ campo.value = vr.substr( 0, tam - 5 ) + "." + vr.substr( tam - 5, 3 ) + "," + vr.substr( tam - dec, tam ) ; } if ( (tam >= 9) && (tam <= 11) ){ campo.value = vr.substr( 0, tam - 8 ) + "." + vr.substr( tam - 8, 3 ) + "." + vr.substr( tam - 5, 3 ) + "," + vr.substr( tam - dec, tam ) ; } if ( (tam >= 12) && (tam <= 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 - dec, tam ) ; } if ( (tam >= 15) && (tam <= 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 ) ; } } }
pa chamar esta função é simples C#:
txtValor.Attribute.Add("onKeyDown", "this, 10, this.event, 2");
14/05/2008
Chanteelee
Tenta direitinho, por que a parada funciona sim...
Tenta mudar as propriedades até encontrar o q tu quer
Clique aqui para fazer login e interagir na Comunidade :)