Uso de mascaras em datatable modo edição

Caros

Estou desenvolvendo uma widget que utiliza datatable e estou usando o metodo de edição para alterar o valores. Dentre esses valores preciso alterar um campo que representa valor moneatório, estou tentando adicionar uma mascara de valor em tempo de execução usando $(this).mask(‘000,00’, { reverse: true }); por exemplo mas quando o campo é habilitado não consigo editar o valor e ele fica com essa informação fixa da mascara. observação: O datatable é criado com um mustache.

Alguém poderia me ajudar.

image

@wasleyguittar , Boa tarde!

Tente utilizar o jquery.maskMoney.min.js (link para download), coloque ela no seu projeto e tente fazer assim:

$(this).maskMoney({thousands:'.', decimal:',', allowZero:false});

Oi @gabrielfrna já tenho essa lib mas não funciona. Ele trava o formato e nao aceita digitar

Não teve jeito, consegui parcialmente trocando o digito da mascara por 9 ai ele permitiu a digitação mas obrigava a quantidade de digitos da mascara. Acabei criando uma função pura mesmo.

function(value) {
// Remove espaços e tenta converter para float
let removeCaracteres = value.trim().replace(/./g, ‘’).replace(‘,’, ‘.’);
let novoValor = parseFloat(removeCaracteres);
// Verifica se é um número válido
if (isNaN(novoValor)) {
return false; // Valor inválido
}
// Formata o valor para duas casas decimais
let valorFormatado = novoValor.toFixed(2).replace(‘.’, ‘,’).replace(/\B(?=(\d{3})+(?!\d))/g, ‘.’);
return valorFormatado;
}

1 curtida

@wasleyguittar , só uma dúvida.
Nos seus testes você utilizou .mask ou .maskMoney? Ou testou com os dois formatos?

Testei com os 2, o .maskMoney acusou não existir na lib

1 curtida

Você chegou a adicionar a biblioteca nesse local?
[sua_widget]/src/main/webapp/resources/js/jquery.maskMoney.min.js

Depois de adicionar, referenciou ela no application.info?

application.resource.js.1=/resources/js/jquery.maskMoney.min.js
application.resource.js.2=/resources/js/[sua_widget].js
application.resource.css.3=/resources/css/[sua_widget].css