Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

formigoni

Script

Recommended Posts

Bom dia galera do fórum...

... mais uma vez recorro a turma daqui pra me dar uma luz.

 

Seguinte, preciso formatar um campo de texto do meu formulário ao digitar um valor com esse formato:

0,0000, por exemplo: 0,8599, consegui alguns scripts mas todos estão muito confusos e não consegui adaptar as minhas necessidades.

 

Vejam, peguei esse aqui:

 

<script LANGUAGE="JavaScript">
	function currencyFormat(fld, milSep, decSep, e) {
	var sep = 0;
	var key = '';
	var i = j = 0;
	var len = len2 = 0;
	var strCheck = '0123456789';
	var aux = aux2 = '';
	var whichCode = (window.Event) ? e.which : e.keyCode;
	if (whichCode == 13) return true;  // Enter
	key = String.fromCharCode(whichCode);  // Get key value from key code
	if (strCheck.indexOf(key) == -1) return false;  // Not a valid key
	len = fld.value.length;
	for(i = 0; i < len; i++)
	if ((fld.value.charAt(i) != '0') && (fld.value.charAt(i) != decSep)) break;
	aux = '';
	for(; i < len; i++)
	if (strCheck.indexOf(fld.value.charAt(i))!=-1) aux += fld.value.charAt(i);
	aux += key;
	len = aux.length;
	if (len == 0) fld.value = '';
	if (len == 1) fld.value = '0'+ decSep + '0' + aux;
	if (len == 2) fld.value = '0'+ decSep + aux;
	if (len > 2) {
	aux2 = '';
	for (j = 0, i = len - 3; i >= 0; i--) {
	if (j == 3) {
	aux2 += milSep;
	j = 0;
	}
	aux2 += aux.charAt(i);
	j++;
	}
	fld.value = '';
	len2 = aux2.length;
	for (i = len2 - 1; i >= 0; i--)
	fld.value += aux2.charAt(i);
	fld.value += decSep + aux.substr(len - 3, len);
	}
	return false;
	}
	</script>

o campo do meu form está assim:

 

<input name="massa" class="style11" id="massa" 
				  onkeyup="return(currencyFormat(this,',','',event))" size="13" maxlength="13" />

Se alguém ai puder me orientar em como adaptar, vou agradecer muito.

Valeu moçada e fiquem na paz.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ainda tô aprendendo Expressões Regulares... veja se é o seguinte:

<script type="text/javascript">
function mascara(o,f){
	v_obj=o
	v_fun=f
	setTimeout("execmascara()",1)
}
function execmascara(){
	v_obj.value=v_fun(v_obj.value)
}
function mnumeros(v){
	v=v.replace(/\D/g,"")					//Remove tudo o que não é dígito
	v=v.replace(/^(\d{1})(\d)/,"$1,$2") //coloca a virgula depois do primeiro dígito
	return v
}
</script>

<input name="massa" class="style11" id="massa" onkeypress="mascara(this, mnumeros)" size="13" maxlength="13" />

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá William Bruno.

Era exatamente isso que eu estava precisando.

Valeu cara, muito obrigado mesmo.

Fica na paz.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá William Bruno ou alguém por ai.

A sua função me ajudou muito, mas me diga uma coisa, se por exemplo eu precisar digitar um valor como esse:

 

21,5

 

Como posso usar essa função para fazer isso? Desculpa a perturbação, mas seria de grande ajuda.

Valeu e fica na paz,

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá William Bruno ou alguém por ai.

A sua função me ajudou muito, mas me diga uma coisa, se por exemplo eu precisar digitar um valor como esse:

 

21,5

 

Como posso usar essa função para fazer isso? Desculpa a perturbação, mas seria de grande ajuda.

Valeu e fica na paz,

Compartilhar este post


Link para o post
Compartilhar em outros sites

E ai pessoal, alguma dica de como formatar a casa decimal após a vírgula usando a função do William Bruno?

Por exemplo:

 

25,7

 

Valeu e fiquem na paz

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá pessoal,

Alguma dica de como usar o script do William Bruno?

Por exemplo:

 

Digitar o valor e ficar assim 27,9

 

Valeu e fiquem na paz

Compartilhar este post


Link para o post
Compartilhar em outros sites

Essa máscara, só vai aceitar, um tipo ou outro.

Não tem como colocar os 2.. pelo menos eu não vejo como. Para fazer 2 casas (virgula), depois os outros números, basta você alterar a ER.

<script type="text/javascript">
function mascara(o,f){
	v_obj=o
	v_fun=f
	setTimeout("execmascara()",1)
}
function execmascara(){
	v_obj.value=v_fun(v_obj.value)
}
function umaCasa(v){
	v=v.replace(/\D/g,"")					//Remove tudo o que não é dígito
	v=v.replace(/^(\d{1})(\d)/,"$1,$2") //coloca a virgula depois do primeiro dígito
	return v
}
function duasCasas(v){
	v=v.replace(/\D/g,"")					//Remove tudo o que não é dígito
	v=v.replace(/^(\d{2})(\d)/,"$1,$2") //coloca a virgula depois do segundo dígito
	return v
}
</script>

<input name="massa" class="style11" id="massa" onkeypress="mascara(this, umaCasa)" size="13" maxlength="13" />
<input name="massa" class="style11" id="massa" onkeypress="mascara(this, duasCasas)" size="13" maxlength="13" />
Veja que criei outra função para as duas casa. Apenas alterando a quantidade de DIGITOS que é especificada dentro dos parênteses.

Compartilhar este post


Link para o post
Compartilhar em outros sites

TÓPICO RESOLVIDO

 

William Bruno, desculpa pela demora em responder.

Mas muito obrigado pela dica e o script, me ajudou demais.

Valeu e fica na paz.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.