-1
Hi, I’m using Laravel, and I want to save the data after done a calculation. I am using the Jquery Mask plugin to facilitate user understanding. However, I have no idea how to filter Mask data to save the information. I even have a javascript function to take the data from Mask, to make a calculation. Can you get the javascript data directly from the Laravel controller? Please help me :)
The error (because it is taking the data from Mask (R$, %):
Some codes:
View:
<form action="/produtos" method="POST">
@csrf
<div class="row">
<div class="col-4">
<label>Custo 1:</label>
<input type="text" class="form-group" id="custo1" name="custo1" onkeyup="calcular();">
</div>
<div class="col-4">
<label>IPI:</label>
<input type="text" class="form-group" id="perc_ipi" name="perc_ipi" onkeyup="calcular();"><br><br>
</div>
<div class="col-4">
<label>ST:</label>
<input type="text" class="form-group" id="perc_st" name="perc_st" onkeyup="calcular();">
</div>
<div class="col-4">
<label>Outros:</label>
<input type="text" class="form-group" id="perc_outros" name="perc_outros" onkeyup="calcular();"><br><br>
</div>
<div class="col-4">
<label>Frete:</label>
<input type="text" class="form-group" id="perc_frete" name="perc_frete" onkeyup="calcular();">
</div>
<div class="col-4">
<label>FCPST:</label>
<input type="text" class="form-group" id="perc_fcpst" name="perc_fcpst" onkeyup="calcular();"><br><br>
</div>
<div class="col-4">
<label>STUF:</label>
<input type="text" class="form-group" id="perc_stuf" name="perc_stuf" onkeyup="calcular();">
</div>
<div class="col-4">
<label>Desconto:</label>
<input type="text" class="form-group" id="perc_desc" name="perc_desc" onkeyup="calcular();"><br><br>
</div>
<div class="col-4">
<label>Custo 2:</label>
<span type="text" class="form-group" id="custo2" name="custo2"></span><br>
</div>
</div>
<button class="btn btn-primary btn-block col-4" type="submit">Salvar</button>
</form>
JS:
//Função para retornar apenas os números
function somenteNumero(n){
n = n.replace(/[^\d,]/g,'')
.replace(",", '.');
return +n;
}
//Função para calcular custo2
function calcular() {
var custo1 = somenteNumero(document.getElementById('custo1').value);
var calcIPI1 = somenteNumero(document.getElementById('perc_ipi').value);
var calcST1 = somenteNumero(document.getElementById('perc_st').value);
var calcOutros1 = somenteNumero(document.getElementById('perc_outros').value);
var calcFrete1 = somenteNumero(document.getElementById('perc_frete').value);
var calcFCPST1 = somenteNumero(document.getElementById('perc_fcpst').value);
var calcSTUF1 = somenteNumero(document.getElementById('perc_stuf').value);
var calcDesconto1 = somenteNumero(document.getElementById('perc_desc').value);
var elemResult = document.getElementById("custo2");
//Fórmulas das percentagens
calcIPI2 = custo1 * calcIPI1 / 100 + custo1;
calcST2 = custo1 * calcST1 / 100;
calcOutros2 = custo1 * calcOutros1 / 100;
calcFrete2 = custo1 * calcFrete1 / 100;
calcFCPST2 = custo1 * calcFCPST1 / 100;
calcSTUF2 = custo1 * calcSTUF1 / 100;
//Gerando o custo 2.
custo2 = calcIPI2 + calcST2 + calcOutros2 + calcFrete2 + calcFCPST2 + calcSTUF2;
custo2 = custo2 - custo1 * calcDesconto1 / 100;
elemResult.innerText = custo2.toLocaleString("pt-BR", { style: "currency" , currency:"BRL"});
}
//JQuery Maskmoney
$(function() {
$('#custo1').maskMoney({ prefix: 'R$ ', reverse: 'false', decimal: ',', thousands: '.', precision: 2 });
})
$(function() {
$('#venda').maskMoney({ prefix: 'R$ ', reverse: 'false', decimal: ',', thousands: '.', precision: 2 });
})
//JQuery Mask
$('#perc_ipi').mask('##0,00%', {reverse: true});
$("#perc_frete").mask('##0,00%', {reverse: true});
$("#perc_outros").mask('##0,00%', {reverse: true});
$("#perc_st").mask('##0,00%', {reverse: true});
$("#perc_fcpst").mask('##0,00%', {reverse: true});
$("#perc_stuf").mask('##0,00%', {reverse: true});
$("#perc_desc").mask('##0,00%', {reverse: true});
$("#custo2").mask("999.999.990,00", {reverse: true});
$("#venda").mask("999.999.990,00", {reverse: true});
Controller:
public function store(Request $request)
{
$produto = new Produto();
$produto->custo1 = $request->input('custo1');
$produto->perc_ipi = $request->input('perc_ipi');
$produto->perc_frete = $request->input('perc_frete');
$produto->perc_outros = $request->input('perc_outros');
$produto->perc_st = $request->input('perc_st');
$produto->perc_fcpst = $request->input('perc_fcpst');
$produto->perc_stuf = $request->input('perc_stuf');
$produto->perc_desc = $request->input('perc_desc');
$produto->custo2 = $request->input('custo2');
$produto->save();
return redirect('/produtos');
}
Send by ajax jquery Mask has a function that takes out Mask looks doc from it
– Lucas Antonio