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:
-
Biblioteca jquery.mask.js:
https://github.com/igorescobar/jQuery-Mask-Plugin/blob/master/src/jquery.mask.js -
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