DICA :: Campo com decimal dinâmico

Já nos deparamos com a necessidade de obter dinamicamente tamanhos diferentes para decimais em uma campo numérico (float).
Um exemplo é a tela de vendas, onde conforme do tipo de produto e a unidade de venda a quantidade pode ter 0, 1, 2 ou 3 casas decimais.

Vou compartilhar aqui um exemplo na prática de como obter dinamicamente as casas decimais em um campo dentro de um formulário:

Tela do Exemplo (sem erros no console javascript) :

Demonstrando na prática:

Vamos ao código:
Repositório Javascript do Formulário, evento form/onload

$("#id_sc_field_valor").mask('#.##0,00',{reverse:true});
$("#id_sc_field_valor").attr('placeholder','_.___,__');

Para aqueles que não conhecem ou usam pouco esse repositório javascript. segue tela orientando a rota para chegar no evento:

Evento Onload

$jsUrl = sc_url_library('prj','JsUtil','jquery.mask.js');

echo <<<HTML
<script type="text/javascript" src="$jsUrl"></script>
HTML;

Evento onValidate

$_valor =str_replace('.','',{valor});
$_valor = (float)  str_replace(',','.',$_valor);
sc_alert($_valor);

Evento Ajax OnClick do campo rádio (onde escolhe quantas decimais deseja)

$mask = [
	'#.##0',
	'#.##0,0',
	'#.##0,00',
	'#.##0,000'
];

$placeholder = [
	'_.___',
	'_.___,_',
	'_.___,__',
	'_.___,___'
];
$placeholder 	= $placeholder[{decimais}];
$mask 			= $mask[{decimais}];

{valor} = '';
sc_ajax_javascript("$('#id_sc_field_valor').mask('$mask', {reverse: true, 'placeholder': '$placeholder'})");
sc_set_focus ('valor');

Observação:

  • O Campo do valor tem que ser do tipo texto no formulário.
  • Criar Biblioteca Externa com nome JsUtil e atribuir o script jquery.mask.js cujo o download está logo a seguir

Downloads:

  1. Biblioteca jquery.mask.js:
    https://github.com/igorescobar/jQuery-Mask-Plugin/blob/master/src/jquery.mask.js

  2. Aplicação Exportada (importar como aplicação na IDE Scriptcase):
    https://drive.google.com/file/d/1-6FSpzXvwIlI3XTX4Um7NnheL-axKmSZ/view?usp=sharing

TAGS: HAROLDO, INFINITUSWEB, FORMULÁRIO, CONTROLE, JAVASCRIPT, DECIMAL, DINÂMICO, VALOR



1 Curtida

Excelente dica.
Tenho certeza que vai ajudar muitos colegas.
Mais uma vez, parabéns e obrigado…

2 Curtidas