Ir para conteúdo

POWERED BY:

Arquivado

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

Marcelo N. Sousa

Máscara para peso

Recommended Posts

Olá pessoal do IMasters!

já pesquisei... tentei fazer minhas cambiaras mas nada, estrou precisando de uma máscara para peso.

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Normalmente costuma-se adotar o kg como unidade primária e todos os pesos inferiores a 1kg definidos como decimais, uma vez que, por exemplo, 0,375kg é o mesmo que 375g.

 

Com isso em mente você pode usar uma máscara genérica apenas para adicionar a pontuação de milhares por questões estéticas, afinal, dificilmente você vai ter um produto que pese mais que mil quilos.

 

A menos que seja um veículo ou maquinário pesado, mas isso seria um caso bem específico.

Compartilhar este post


Link para o post
Compartilhar em outros sites

diga algumas entradas e quais são as saídas esperadas.

 

ai podemos te ajudar. Como por exemplo, adaptar uma expressão regular daqui para isso:

http://wbruno.com.br/2011/03/12/diversas-mascaras-com-er/

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bem como eu disse, uma máscara genérica que apenas adicione o separador a cada três casas.

Compartilhar este post


Link para o post
Compartilhar em outros sites

pesquisando encontrei esta função aqui mesmo no fórum, como poderia melhorar para o evento onkeypress?

como podem ver não tenho muito conhecimento de js.

Obrigado!

<html>
<head>
<title>Máscara</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script language="JavaScript" type="text/JavaScript">
<!--
function mascara() {
	var valor		  = document.getElementById("texto").value;
	valor = valor.replace (".","");
	valor = valor.replace (",","");
	var tamanho		= valor.length;
	var iniciodecimais = tamanho - 3;
	if(tamanho > 3) { // então deve colocar separador
		var decimais		= valor.substr(iniciodecimais,3);
		var inteiros		= valor.substr(0,iniciodecimais);
		var stringinvertida = "";
		var tamanhoinverte = tamanho - 3;
		while (tamanhoinverte > 0) {
			tamanhoinverte -= 1;
			stringinvertida += valor.substr(tamanhoinverte,1);
		}
		var j = 0;
		var decimaisformatado = "";
		var stringformatado = "";
		for (i = 0; i <= stringinvertida.length; i++) {
			j = j + 1;
			stringformatado = stringformatado + stringinvertida.substr(i,1);
			if (j == 3 && stringformatado != "") {
				if (decimaisformatado == "") {
					decimaisformatado = stringformatado;
				} else {
					decimaisformatado +=  '.' + stringformatado;
				}
				stringformatado = "";
				j = 0;
			}
		}
		if (j == 2 && tamanho != 4) {
			decimaisformatado += "." + stringformatado
		} else {
			decimaisformatado += stringformatado;
		}
		
		tamanhoinverte = decimaisformatado.length;
		var stringfinal = "";
		while (tamanhoinverte > 0) {
			tamanhoinverte = tamanhoinverte - 1;
			stringfinal += decimaisformatado.substr(tamanhoinverte,1);
		}
		document.getElementById("texto").value = stringfinal + "." + decimais;
	}
}
//-->
</script>
</head>
<body>
  <input name="texto" type="text" id="texto" onBlur="mascara(this)">
</body>
</html>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Uma vez um amigo de outro fórum me passou a seguinte função que adiciona os pontos a cada três casas:

function dots( strNumber ) {

    while ( strNumber.match( /^\d{4}/ ) ) {
        strNumber = strNumber.replace( /(\d)(\d{3}(\.|$))/, '$1.$2' );
    }

    return strNumber;
}
Pelo seu post anterior a adição dos pontinhos pode ser feita quando o campo perder o foco, então:

window.onload = function() {

    document.getElementById( 'test' ).onblur = function() {
        this.value = dots( this.value );
    }
}

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.