DUVIDAS COM JQUERY

ROBSON220BASS 16/07/2012 16:03:28
#406196
pessoal boa tarde?, to com uma duvida com um plugin do jquery

seguinte..
na minha pagina tem um gridview com 5 colunas

código
descrição
embalagem
quantidade
preço

quero formatar o campo (preço) para moeda.. (conforme o usuario digita o jquery ja vai formatando)

ate ai ta tudo blz...

porem em alguns pcs nao funciona.

agora os codigos, para analise:

para o gridview :

<asp:GridView ID=[Ô]GridView1[Ô] runat=[Ô]server[Ô]
AllowPaging=[Ô]True[Ô] AutoGenerateColumns=[Ô]False[Ô] BackColor=[Ô]#DEBA84[Ô]
BorderColor=[Ô]#DEBA84[Ô] BorderStyle=[Ô]None[Ô] BorderWidth=[Ô]1px[Ô] CellPadding=[Ô]1[Ô]
CellSpacing=[Ô]1[Ô] Height=[Ô]342px[Ô] OnRowDataBound=[Ô]AplicaCor[Ô] PageSize=[Ô]50[Ô]
style=[Ô]text-align: left;[Ô] Width=[Ô]747px[Ô] Caption=[Ô]Lista de Cotação[Ô]>
<Columns>
<asp:TemplateField HeaderText=[Ô]CODIGO[Ô]>
<ItemTemplate>
<asp:Label ID=[Ô]codigo[Ô] runat=[Ô]server[Ô] Text=[ô]<%# Eval([Ô]CODIGO[Ô]) %>[ô]></asp:Label>
</ItemTemplate>
<ItemStyle HorizontalAlign=[Ô]Center[Ô] Width=[Ô]40px[Ô] />
</asp:TemplateField>
<asp:TemplateField HeaderText=[Ô]DESCRICAO[Ô]>
<ItemTemplate>
<asp:Label ID=[Ô]descricao[Ô] runat=[Ô]server[Ô] Text=[ô]<%# Eval([Ô]DESCRICAO[Ô]) %>[ô]></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText=[Ô]EMBALAG[Ô]>
<ItemTemplate>
<asp:Label ID=[Ô]embalag[Ô] runat=[Ô]server[Ô] Text=[ô]<%# Eval([Ô]EMBALAG[Ô]) %>[ô]></asp:Label>
</ItemTemplate>
<ItemStyle Width=[Ô]80px[Ô] />
</asp:TemplateField>
<asp:TemplateField HeaderText=[Ô]Qtde[Ô]>
<ItemTemplate>
<asp:Label ID=[Ô]Qtde[Ô] runat=[Ô]server[Ô] Text=[ô]<%# Eval([Ô]QTDE[Ô]) %>[ô]></asp:Label>
</ItemTemplate>
<ItemStyle HorizontalAlign=[Ô]Center[Ô] Width=[Ô]40px[Ô] />
</asp:TemplateField>
<asp:TemplateField HeaderText=[Ô]PRECO[Ô]>
<ItemTemplate>
<asp:TextBox ID=[Ô]txtPreco[Ô] runat=[Ô]server[Ô]
Text=[ô]<%# Eval([Ô]VALOR[Ô], [Ô]{0:n}[Ô]) %>[ô]
onkeypress=[Ô][Ô]
Height=[Ô]23px[Ô] Width=[Ô]92px[Ô] MaxLength=[Ô]12[Ô]></asp:TextBox>
</ItemTemplate>
<HeaderStyle Width=[Ô]40px[Ô] />
<ItemStyle Width=[Ô]30px[Ô] />
</asp:TemplateField>
</Columns>
<FooterStyle BackColor=[Ô]#F7DFB5[Ô] ForeColor=[Ô]#8C4510[Ô] />
<HeaderStyle BackColor=[Ô]#A55129[Ô] Font-Bold=[Ô]True[Ô] ForeColor=[Ô]White[Ô]
HorizontalAlign=[Ô]Center[Ô] />
<PagerSettings FirstPageText=[Ô]&gt;[Ô] LastPageText=[Ô]Anterior[Ô]
Mode=[Ô]NumericFirstLast[Ô] PreviousPageText=[Ô]&gt;[Ô] />
<PagerStyle ForeColor=[Ô]#8C4510[Ô] HorizontalAlign=[Ô]Center[Ô] />
<RowStyle BackColor=[Ô]#FFF7E7[Ô] ForeColor=[Ô]#8C4510[Ô] />
<SelectedRowStyle BackColor=[Ô]#738A9C[Ô] Font-Bold=[Ô]True[Ô] ForeColor=[Ô]White[Ô] />
<SortedAscendingCellStyle BackColor=[Ô]#FFF1D4[Ô] />
<SortedAscendingHeaderStyle BackColor=[Ô]#B95C30[Ô] />
<SortedDescendingCellStyle BackColor=[Ô]#F1E5CE[Ô] />
<SortedDescendingHeaderStyle BackColor=[Ô]#93451F[Ô] />
</asp:GridView>


para o jquery :
nome do arquivo jquery => formatar_moeda.js

function formatar_moeda(campo, separador_milhar, separador_decimal, tecla) {
var sep = 0;
var key = [ô][ô];
var i = j = 0;
var len = len2 = 0;
var strCheck = [ô]0123456789[ô];
var aux = aux2 = [ô][ô];
var whichCode = (window.Event) ? tecla.which : tecla.keyCode;

if (whichCode == 13) return true; // Tecla Enter
if (whichCode == 8) return true; // Tecla Delete
key = String.fromCharCode(whichCode); // Pegando o valor digitado
if (strCheck.indexOf(key) == -1) return false; // Valor inválido (não inteiro)
len = campo.value.length;
for(i = 0; i < len; i++)
if ((campo.value.charAt(i) != [ô]0[ô]) && (campo.value.charAt(i) != separador_decimal)) break;
aux = [ô][ô];
for(; i < len; i++)
if (strCheck.indexOf(campo.value.charAt(i))!=-1) aux += campo.value.charAt(i);
aux += key;
len = aux.length;
if (len == 0) campo.value = [ô][ô];
if (len == 1) campo.value = [ô]0[ô]+ separador_decimal + [ô]0[ô] + aux;
if (len == 2) campo.value = [ô]0[ô]+ separador_decimal + aux;

if (len > 2) {
aux2 = [ô][ô];

for (j = 0, i = len - 3; i >= 0; i--) {
if (j == 3) {
aux2 += separador_milhar;
j = 0;
}
aux2 += aux.charAt(i);
j++;
}

campo.value = [ô][ô];
len2 = aux2.length;
for (i = len2 - 1; i >= 0; i--)
campo.value += aux2.charAt(i);
campo.value += separador_decimal + aux.substr(len - 2, len);
}

return false;
}


alguem pode me ajudar?

quero saber como rodar em todas (internet explore, mozila, crome, etc...)
ou se exite outra forma de se fazer isso?
obrigado.
KERPLUNK 16/07/2012 17:01:18
#406199
Resposta escolhida
1 - Esse javascript NÃO é JQuery, é só um javascript para formatação
2 - Você não está chamado a function em lugar nenhum...
ROBSON220BASS 16/07/2012 17:39:44
#406202
ops... desculpa tinha retirado o codigo para teste, e esqueci de colocar novamente...

pronto.. chamo a funcao assim:

<asp:GridView ID=[Ô]GridView1[Ô] runat=[Ô]server[Ô]
AllowPaging=[Ô]True[Ô] AutoGenerateColumns=[Ô]False[Ô] BackColor=[Ô]#DEBA84[Ô]
BorderColor=[Ô]#DEBA84[Ô] BorderStyle=[Ô]None[Ô] BorderWidth=[Ô]1px[Ô] CellPadding=[Ô]1[Ô]
CellSpacing=[Ô]1[Ô] Height=[Ô]342px[Ô] OnRowDataBound=[Ô]AplicaCor[Ô] PageSize=[Ô]50[Ô]
style=[Ô]text-align: left;[Ô] Width=[Ô]747px[Ô] Caption=[Ô]Lista de Cotação[Ô]>
<Columns>
<asp:TemplateField HeaderText=[Ô]CODIGO[Ô]>
<ItemTemplate>
<asp:Label ID=[Ô]codigo[Ô] runat=[Ô]server[Ô] Text=[ô]<%# Eval([Ô]CODIGO[Ô]) %>[ô]></asp:Label>
</ItemTemplate>
<ItemStyle HorizontalAlign=[Ô]Center[Ô] Width=[Ô]40px[Ô] />
</asp:TemplateField>
<asp:TemplateField HeaderText=[Ô]DESCRICAO[Ô]>
<ItemTemplate>
<asp:Label ID=[Ô]descricao[Ô] runat=[Ô]server[Ô] Text=[ô]<%# Eval([Ô]DESCRICAO[Ô]) %>[ô]></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText=[Ô]EMBALAG[Ô]>
<ItemTemplate>
<asp:Label ID=[Ô]embalag[Ô] runat=[Ô]server[Ô] Text=[ô]<%# Eval([Ô]EMBALAG[Ô]) %>[ô]></asp:Label>
</ItemTemplate>
<ItemStyle Width=[Ô]80px[Ô] />
</asp:TemplateField>
<asp:TemplateField HeaderText=[Ô]Qtde[Ô]>
<ItemTemplate>
<asp:Label ID=[Ô]Qtde[Ô] runat=[Ô]server[Ô] Text=[ô]<%# Eval([Ô]QTDE[Ô]) %>[ô]></asp:Label>
</ItemTemplate>
<ItemStyle HorizontalAlign=[Ô]Center[Ô] Width=[Ô]40px[Ô] />
</asp:TemplateField>
<asp:TemplateField HeaderText=[Ô]PRECO[Ô]>
<ItemTemplate>
<asp:TextBox ID=[Ô]txtPreco[Ô] runat=[Ô]server[Ô]
Text=[ô]<%# Eval([Ô]VALOR[Ô], [Ô]{0:n}[Ô]) %>[ô]
onkeypress=[Ô]return formatar_moeda(this,[ô].[ô],[ô],[ô],event);[Ô]
Height=[Ô]23px[Ô] Width=[Ô]92px[Ô] MaxLength=[Ô]12[Ô]></asp:TextBox>
</ItemTemplate>
<HeaderStyle Width=[Ô]40px[Ô] />
<ItemStyle Width=[Ô]30px[Ô] />
</asp:TemplateField>
</Columns>
<FooterStyle BackColor=[Ô]#F7DFB5[Ô] ForeColor=[Ô]#8C4510[Ô] />
<HeaderStyle BackColor=[Ô]#A55129[Ô] Font-Bold=[Ô]True[Ô] ForeColor=[Ô]White[Ô]
HorizontalAlign=[Ô]Center[Ô] />
<PagerSettings FirstPageText=[Ô]>[Ô] LastPageText=[Ô]Anterior[Ô]
Mode=[Ô]NumericFirstLast[Ô] PreviousPageText=[Ô]>[Ô] />
<PagerStyle ForeColor=[Ô]#8C4510[Ô] HorizontalAlign=[Ô]Center[Ô] />
<RowStyle BackColor=[Ô]#FFF7E7[Ô] ForeColor=[Ô]#8C4510[Ô] />
<SelectedRowStyle BackColor=[Ô]#738A9C[Ô] Font-Bold=[Ô]True[Ô] ForeColor=[Ô]White[Ô] />
<SortedAscendingCellStyle BackColor=[Ô]#FFF1D4[Ô] />
<SortedAscendingHeaderStyle BackColor=[Ô]#B95C30[Ô] />
<SortedDescendingCellStyle BackColor=[Ô]#F1E5CE[Ô] />
<SortedDescendingHeaderStyle BackColor=[Ô]#93451F[Ô] />
</asp:GridView>


KERPLUNK, esta funcionado blz em alguns browsers, o que pode ser feito para normalizar isto?

obrigado, desde ja.
KERPLUNK 16/07/2012 19:03:11
#406210
Você vai ter que depurar passo à passo o que essa função javascript faz...
ROBSON220BASS 24/07/2012 09:30:12
#406498
<asp:GridView ID=[Ô]GridView1[Ô] runat=[Ô]server[Ô]
AllowPaging=[Ô]True[Ô] AutoGenerateColumns=[Ô]False[Ô] BackColor=[Ô]#DEBA84[Ô]
BorderColor=[Ô]#DEBA84[Ô] BorderStyle=[Ô]None[Ô] BorderWidth=[Ô]1px[Ô] CellPadding=[Ô]1[Ô]
CellSpacing=[Ô]1[Ô] Height=[Ô]342px[Ô] OnRowDataBound=[Ô]AplicaCor[Ô] PageSize=[Ô]50[Ô]
style=[Ô]text-align: left;[Ô] Width=[Ô]747px[Ô] Caption=[Ô]Lista de Cotação[Ô]>
<Columns>
<asp:TemplateField HeaderText=[Ô]CODIGO[Ô]>
<ItemTemplate>
<asp:Label ID=[Ô]codigo[Ô] runat=[Ô]server[Ô] Text=[ô]<%# Eval([Ô]CODIGO[Ô]) %>[ô]></asp:Label>
</ItemTemplate>
<ItemStyle HorizontalAlign=[Ô]Center[Ô] Width=[Ô]40px[Ô] />
</asp:TemplateField>
<asp:TemplateField HeaderText=[Ô]DESCRICAO[Ô]>
<ItemTemplate>
<asp:Label ID=[Ô]descricao[Ô] runat=[Ô]server[Ô] Text=[ô]<%# Eval([Ô]DESCRICAO[Ô]) %>[ô]></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText=[Ô]EMBALAG[Ô]>
<ItemTemplate>
<asp:Label ID=[Ô]embalag[Ô] runat=[Ô]server[Ô] Text=[ô]<%# Eval([Ô]EMBALAG[Ô]) %>[ô]></asp:Label>
</ItemTemplate>
<ItemStyle Width=[Ô]80px[Ô] />
</asp:TemplateField>
<asp:TemplateField HeaderText=[Ô]Qtde[Ô]>
<ItemTemplate>
<asp:Label ID=[Ô]Qtde[Ô] runat=[Ô]server[Ô] Text=[ô]<%# Eval([Ô]QTDE[Ô]) %>[ô]></asp:Label>
</ItemTemplate>
<ItemStyle HorizontalAlign=[Ô]Center[Ô] Width=[Ô]40px[Ô] />
</asp:TemplateField>
<asp:TemplateField HeaderText=[Ô]PRECO[Ô]>
<ItemTemplate>
<asp:TextBox ID=[Ô]txtPreco[Ô] runat=[Ô]server[Ô]
Text=[ô]<%# Eval([Ô]VALOR[Ô], [Ô]{0:n}[Ô]) %>[ô]
[txt-color=#e80000]onkeypress=[Ô]return formatar_moeda(this,[ô].[ô],[ô],[ô],event)[/txt-color];[Ô] -> o evento e disparado quando precionado qualquer tecla numerica dentro do textbox do gridview
Height=[Ô]23px[Ô] Width=[Ô]92px[Ô] MaxLength=[Ô]12[Ô]></asp:TextBox>
</ItemTemplate>
<HeaderStyle Width=[Ô]40px[Ô] />
<ItemStyle Width=[Ô]30px[Ô] />
</asp:TemplateField>
</Columns>
<FooterStyle BackColor=[Ô]#F7DFB5[Ô] ForeColor=[Ô]#8C4510[Ô] />
<HeaderStyle BackColor=[Ô]#A55129[Ô] Font-Bold=[Ô]True[Ô] ForeColor=[Ô]White[Ô]
HorizontalAlign=[Ô]Center[Ô] />
<PagerSettings FirstPageText=[Ô]>[Ô] LastPageText=[Ô]Anterior[Ô]
Mode=[Ô]NumericFirstLast[Ô] PreviousPageText=[Ô]>[Ô] />
<PagerStyle ForeColor=[Ô]#8C4510[Ô] HorizontalAlign=[Ô]Center[Ô] />
<RowStyle BackColor=[Ô]#FFF7E7[Ô] ForeColor=[Ô]#8C4510[Ô] />
<SelectedRowStyle BackColor=[Ô]#738A9C[Ô] Font-Bold=[Ô]True[Ô] ForeColor=[Ô]White[Ô] />
<SortedAscendingCellStyle BackColor=[Ô]#FFF1D4[Ô] />
<SortedAscendingHeaderStyle BackColor=[Ô]#B95C30[Ô] />
<SortedDescendingCellStyle BackColor=[Ô]#F1E5CE[Ô] />
<SortedDescendingHeaderStyle BackColor=[Ô]#93451F[Ô] />
</asp:GridView>

JABA 08/08/2012 20:41:56
#407536
Coloque o codigo de formatar_moeda para analisarmos.

vlw
ROBSON220BASS 28/08/2012 11:34:37
#408765
blz.. pessoal descobri que somente no internet 8 esta dando erro, porem e so configurar no novegador que roda blz..

e problema de compatibilidade do navegador..

mas o codigo e esse ai.. pra quem precisar.

function formatar_moeda(campo, separador_milhar, separador_decimal, tecla) {
var sep = 0;
var key = [ô][ô];
var i = j = 0;
var len = len2 = 0;
var strCheck = [ô]0123456789[ô];
var aux = aux2 = [ô][ô];
var whichCode = (window.Event) ? tecla.which : tecla.keyCode;

if (whichCode == 13) return true; // Tecla Enter
if (whichCode == 8) return true; // Tecla Delete
key = String.fromCharCode(whichCode); // Pegando o valor digitado
if (strCheck.indexOf(key) == -1) return false; // Valor inválido (não inteiro)
len = campo.value.length;
for(i = 0; i < len; i++)
if ((campo.value.charAt(i) != [ô]0[ô]) && (campo.value.charAt(i) != separador_decimal)) break;
aux = [ô][ô];
for(; i < len; i++)
if (strCheck.indexOf(campo.value.charAt(i))!=-1) aux += campo.value.charAt(i);
aux += key;
len = aux.length;
if (len == 0) campo.value = [ô][ô];
if (len == 1) campo.value = [ô]0[ô]+ separador_decimal + [ô]0[ô] + aux;
if (len == 2) campo.value = [ô]0[ô]+ separador_decimal + aux;

if (len > 2) {
aux2 = [ô][ô];

for (j = 0, i = len - 3; i >= 0; i--) {
if (j == 3) {
aux2 += separador_milhar;
j = 0;
}
aux2 += aux.charAt(i);
j++;
}

campo.value = [ô][ô];
len2 = aux2.length;
for (i = len2 - 1; i >= 0; i--)
campo.value += aux2.charAt(i);
campo.value += separador_decimal + aux.substr(len - 2, len);
}

return false;
}
Tópico encerrado , respostas não são mais permitidas