Ir para conteúdo

POWERED BY:

Arquivado

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

TeixeiraRamos

O javascritp não funciona

Recommended Posts

Estou estudando PHP e MySQL. Um dos laboratórios diz o seguinte:

 

Como validar campos decimais para aceitar somente pontos na separação de suas casas decimais.

 

Parte de do código:

<head>
.
.
<script language="javascript">
.
.

//Aceita somente valores numéricos com separador decimal (vírgula ou ponto).

function numero_fracionario(e){

	var tecla=(window.event)?event.keyCode:e.which;
	if((tecla > 47 && tecla < 58) || tecla == 46 || tecla == 44) return true;
	else{
	if (tecla != 8) return false;
	else return true;
	}
	}

</script>

</head>
<body>
<form name="form1" method="post" 
action="Lab11_1inc.php" 
onsubmit="return valida_form(this);">


<p><label>Peso:</label><input name="peso" type="text" class="caixa_texto" size="10" maxlength="10" onkeypress="return numero_fracionario(event)" /></p>

<p><label>Comprimento:</label><input name="comprimento" type="text" class="caixa_texto" size="10" maxlength="10" onkeypress="return numero_fracionario(event)" /></p>

<p><label>Largura:</label><input name="largura" type="text" class="caixa_texto" size="10" maxlength="10" onkeypress="return numero_fracionario(event)" /></p>

<p><label>Altura:</label><input name="altura" type="text" class="caixa_texto" size="10" maxlength="10" onkeypress="return numero_fracionario(event)" /></p>

<p><label>Preço:</label><input name="preco" type="text" class="caixa_texto" size="10" maxlength="20" onkeypress="return numero_fracionario(event)" /></p>
.
.	
</div>
</form>
</body>
</html>

Ocorre que os campos preço, peso, comprimento, largura e altura, aceitam números inteiros sem vírgula ou ponto.

 

No formulário que recebe os dados o autor faz a seguinte observação:

 

 

Como no MaySQL somente podemos usar o ponto como separador de casas decimais e o formulário também aceita a vírgula, vamos fazer uma pequena alteração no arquivo Lab11_1inc.php, para que substitua a vírgula pelo ponto, caso o usuário tenha usado uma vírgula no preenchimento do campo.

 

Parte alterada:

// Recupera os valores digitados no formulário Lab11_1.php

.
.
$peso = strtr($peso, ",", ".");

$comprimento = strtr($comprimento, ",", ".");

$largura = strtr($largura, ",", ".");

$altura = strtr($altura, ",", ".");

$preco = strtr($preco, ",", ".");

Ocorre que os dados são gravados normalmente no banco de dados. Outras validações funcionam porém essa de numero_fracionario não funciona. Grava mesmo sem a vígula/ponto. Entendo que não é para criticar com mensagem mas em tempo real deveria corrigir com vírgula, considerando o javascritp.

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.