Ir para conteúdo
Fórum Script Brasil
  • 0

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


Ricardo T. do Prado

Pergunta

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 para o comentário
Compartilhar em outros sites

7 respostass a esta questão

Posts Recomendados

  • 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 para o comentário
Compartilhar em outros 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 para o comentário
Compartilhar em outros 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...

Editado por lucas.js
Link para o comentário
Compartilhar em outros 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 para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...