Jump to content
Fórum Script Brasil
  • 0

formatar valor de um campo antes do submit do formulário


Ricardo T. do Prado

Question

Grande Ajaxianos e Jqueryanos, preciso da ajuda dos Srs.

Preciso formatar o valor de umas inputs antes de enviar os dados, tendo como referência para formatação um atributo.

exemplo, eu tenho um input em html assim;

<input type="text" name="preço" dtType="dtDecimal"> preço

Pois bem, sei que no jQuery, dá para criar atributos e pegar seus valores usando .attr,

Suponha que o cara digitou nessa input [30.000,00] mas queria enviar esse valor formatado, como faço isso? Não manjo muito de jQuery , por isso peço ajuda de vocês.

Pensei em algo +/-

function formata(atributo) {

var tipoCampo = $(this).attr('dtType');

if(tipoCampo == "dtDecimal") {

var valor = $(this).attr('value');

//aqui formato a variável 'valor'

}

}

e se der certo, como passo isso no onClick do botão sumit?

onClick="format(this") ??????

Abs.

Link to comment
Share on other sites

7 answers to this question

Recommended Posts

  • 0

É só usar um pouco de expressão regular:

Supondo que o formato a ser enviado para o servidor seja:

R$ 30.000,00

Seria possível fazer assim:

value = value.replace(/\D/g, '').replace(/([0-9]{0, })([0-9]{3})([0-9]{2})$/g, "R$ $1.$2,$3")

Testa com essa ai, caso não de, da uma pesquisada, existe muito material sobre isso.

Também tem uns plugins jquery que fazem isso enquanto o usuário digita no campo, como o mask

Link to comment
Share on other sites

  • 0

Talvez não fui claro, eu não quero criar mascaras de apresentação, quero ao ENVIAR o valor do input eu os modifique-os, por exemplo,

Sim, eu posso usar uma mascara para formatar o valor de $, que no caso seria: 10.000,00, mas no ato de submeter, queria "reformatar" ele e enviar apenas 10000

será q fui claro?

Abs.

Link to comment
Share on other sites

  • 0

function minhafuncao(){
campo=document.getElementById('meu_campo');
if(campo.value.charAt(campo.value.length-3)==',')campo.value=campo.value.replace(/\D+/g,"").replace(/(\d{2})$/,".$1");
else campo.value=campo.value.replace(/\D+/g,"");
if(campo.value.substr(campo.value.length-3,3)=='.00')campo.value=campo.value.replace(".00","");
return true;
}
No form coloque:
<form onsubmit="return minhafuncao()" action="..." method="post">

Se quiser pode criar um campo hidden e jogar o valor sem formato nele...

para o cliente não ver...

Edited by lucas.js
Link to comment
Share on other sites

  • 0

Lucas, valeu pela dica, mas não seria exatamente bem isso, vou tentar ser mais claro e objetivo,

Eu já tenho as máscaras nas inputs, eu preciso é no quando o formulário seja submetido os campos se re-formatem e passem os valores de acordo com os campos do BD,

<script>
$(document).ready(function(){
    $('#post').click(function(){
    
        var tipo = $(this).attr("dtType");
        var valor = $(this).attr("value");
        
        if(tipo == 'dtDecimal') {
            valor.replace('x','y'); ///
        } else {
            //outras condições baseados no atributo 'tipo';
        }
        
        }
    });
});
obs. esse código é só a lógico, não está certo
<form method="POST" action="">
	<input type="text" name="numero" [b]dtType="dtDecimal"[/b]> teste <br>
	<input type="submit" name="post" value="Postar" id="post" onclick="java script:format()">
</form>

Por exemplo, se eu tiver uma input de Data, já tem o a mascara: ##/##/####, só que ao enviar para $_POST queria reformatar em yyyy-mm-dd, sacou? se fosse decimal, queria mandar sem virgula.

Entenderam, essa formatação tem que acontecer antes do PHP receber por POST as variáveis.

Abs.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152.2k
    • Total Posts
      652k
×
×
  • Create New...