Jump to content


Photo

Ajuda Numa Sintaxe


  • Faça o login para participar
6 replies to this topic

#1 Antonio-Dias

Antonio-Dias

    Novato no fórum

  • Usuários
  • 13 posts
  • Sexo:Não informado

Posted 29/09/2008, 09:06

Ola pessoal bom dia,

estou com uma duvida numa sintaxe de javascript

criei uma logica que quando o usuario digite uma determinada quantidade de numeros(4) sem repeti=los o programa lê e compara com uma variavel para ver se ela são indenticas, posição por posição, eu até ja sei como fazer tipo criar um vetor(split) com for para conferir posição por posição e caso seja verdadeiro aparece a mensagem que esta correto senão que está incorreto , porem acredito que a minha sintaxe não esteja correta vc poderiam dar uma olhada? obrigado.
<html>	<head>		<title>Jogo do Dudão</title>	</head>	<script language="JavaScript">		function validate(){						 d=document.form1			 var senha= 1234;			 var f=" ";			 var senha2=senha.split(",")			 						 for(i=0 i<senha2.length; i++){				f = document.getElementById(senha2[i]);				if(d.numero.value.length == f){					alert(vc acertou!);					else					alert(vc errou!);								}							 			}						 if (d.numero.value.length < 4){		    			alert(" digite 4 numeros.");    				    				    				    								return false;			}						}			</script>	<body>				<form name=form1 align="center">			<table border="1" align="center">								<tr>					<th colspan="2">Bônus Starcraft</th>											</tr>				<tr id=num>					<td><label>Digite a Senha Correta!</label></td>					<td><input type="text" name="numero" id="numero"method="post"></input></td>					<td><input type="button" name="botao" value="Enter" onClick="validate();"></input></td>				</tr>			</table>						</form>	</body></html>


#2 Nicholas Pufal

Nicholas Pufal

    Impossível: só existe até alguém duvidar e provar o contrário.

  • Usuários
  • 1655 posts
  • Sexo:Masculino
  • Localidade:Porto Alegre

Posted 29/09/2008, 09:34

O erro já começa aqui...

var senha= 1234;
						 var senha2=senha.split(",")

Olha o que você está dizendo com esse código:

A variável senha 2 vai ser responsável pela array gerada pela quebra/divisão (split) do inteiro senha, sempre que chegar no caractere ",".

Aconteceu que não tem vírgula no teu inteiro! Se fosse uma string assim: 1,2,3,4 -> Iria funcionar.

Mas é uma inteiro, sendo assim não tem como usar o split(",") neste caso...

Eu só não entendi uma coisa... Por que você quer usar split para isso?

Você comenta: "o programa lê e compara com uma variavel para ver se ela são indenticas, posição por posição"

Se entendi, a seqüencia deve ser a mesma, certo?

Sendo assim apenas uma condicional simples resolve...

Ex:

If (senha == senha2) {
//codigo...
}

Não tem porque usar split... A menos que você queira pegar cada valor e, independente da ordem, checar a senha fornecida... Mas se for exatamente na ordem digitada, não tem por quê.

Edição feita por: Firehalk, 29/09/2008, 09:36.

BLOG Touché Criação - Vamos trocar idéias? -> http://blog.touchecriacao.com.br/
// Links úteis: Busca || Regras
// Não respondo dúvidas via mensagem privada. Use o fórum para buscar ou perguntar.

#3 Antonio-Dias

Antonio-Dias

    Novato no fórum

  • Usuários
  • 13 posts
  • Sexo:Não informado

Posted 29/09/2008, 09:48

Bem a minha logica e o seguinte como eu disse acima o usuario digite apenas 4 numeros, o programa compara posição por posição de cada e ele diz se esta correto ou naum a sequencia de numeros se naum tiver certo a sequencia ele diz que esta errado.

nocaso do split a ideia era ele criar um vetor e comparar valor por valor ate bater a numeração correta criada na variavel senha = 1234 no caso naum sei se precisa colocar (virgula) , porem como eu conseguiria fazer isso ? vc teria como me passar a sintaxe correta com um exemplo? obrigado

#4 Nicholas Pufal

Nicholas Pufal

    Impossível: só existe até alguém duvidar e provar o contrário.

  • Usuários
  • 1655 posts
  • Sexo:Masculino
  • Localidade:Porto Alegre

Posted 29/09/2008, 15:22

Conforme eu disse, você não precisa comparar valor por valor.

Talvez eu esteja entendendo errado o real sentido do que você quer, mas pelo que pude perceber, você quer que todos os números da senha batam com os da senha2, e na ordem correta. Sendo assim, se for apenas isso que você quer, não precisa criar uma array (com split) e ir checando índice por índice.

Bastaria apenas fazer uma condicional neste caso.

Agora, caso o que você quer é algo assim:

senha = 1234

E no caso da senha2, vamos supor que é 4123 (mesmos números, ordens diferentes).

PIMBA! Os números batem (independente da ordem).

Se você quer este tipo de checagem, independente da ordem mas com os mesmos números, aí a figura muda.

Edição feita por: Firehalk, 29/09/2008, 15:25.

BLOG Touché Criação - Vamos trocar idéias? -> http://blog.touchecriacao.com.br/
// Links úteis: Busca || Regras
// Não respondo dúvidas via mensagem privada. Use o fórum para buscar ou perguntar.

#5 Antonio-Dias

Antonio-Dias

    Novato no fórum

  • Usuários
  • 13 posts
  • Sexo:Não informado

Posted 29/09/2008, 15:50

cara assim, realmente naum preciso de split ou for para fazer isso pelo que estou vendo posso fazer tb com if
,porem quando coloco o else e a 2 alert ele simplesmente aparece na tela quando e clico enter antes mesmo de colocar o numero[codebox]<html>
<head>
<title>Dudu Software</title>
</head>
<script language="JavaScript">
function validate(){
d=document.form1
senha = 1234
if(senha == d.numero.value){
alert("Vc acertou!");

}
else{
alert("vc errou");

}
if (d.numero.value.length < 4){
alert(" digite a senha de 4 numeros.");
return false;
}


}



</script>
<body>
<form name=form1 align="center">
<table border="1" align="center">
<tr>
<th colspan="2">Bônus Starcraft</th>
</tr>
<tr id=num>
<td><label>Digite a Senha Correta!</label></td>
<td><input type="text" name="numero" id="numero"method="post"></input></td>
<td><input type="button" name="botao" value="Enter" onClick="validate();"></input></td>
</tr>
</table>
</form>
</body>
</html>[/codebox]

#6 Nicholas Pufal

Nicholas Pufal

    Impossível: só existe até alguém duvidar e provar o contrário.

  • Usuários
  • 1655 posts
  • Sexo:Masculino
  • Localidade:Porto Alegre

Posted 29/09/2008, 16:14

A sua validação do form está errada.

Para bloquear o envio do form quando o número for menor do que 4, essa validação tem que ficar no OnSubmit() e não no OnClick de um botão.

O correto é algo como:

<form onsubmit="sua_funcao_validacao();">

Sacou? Deve ficar dentro do evento onsubmit. Esquece o evento onclick.

Outra coisa, você separou o If.

Aquele If que condiciona que tem que ter pelo menos 4 dígitos, deve conter o código de validação e não ficar separado:

function validate(){					
d=document.form1;
senha = 1234;


if (d.numero.value.length < 4) {
	alert("O número deve conter 4 dígitos.");
} else {

//aqui entra a validação 
	if(senha == d.numero.value){
		alert("Parabéns! Acertou!");
	} else {
		alert("Errou!");
	}
}

}

BLOG Touché Criação - Vamos trocar idéias? -> http://blog.touchecriacao.com.br/
// Links úteis: Busca || Regras
// Não respondo dúvidas via mensagem privada. Use o fórum para buscar ou perguntar.

#7 Antonio-Dias

Antonio-Dias

    Novato no fórum

  • Usuários
  • 13 posts
  • Sexo:Não informado

Posted 30/09/2008, 09:05

è isso mesmo cara obrigado , porem gostaria de saber uma coisa , por exemplo (baseado na logica/sintaxe acima feita por vc) eu preciso tipo dar um aviso em forma de dica para o usuario caso ele acerte alguma posição referente a senha

ex

senha = 1234

ele digitou 2567

ele verifica a posição dentro da string senha e caso ele ache algum numero dentro da string naum importando a posição ele aparece a mensagem

BOA: (aki vai se ele acertou alguma posição independente da ordem)

no caso acima foi so uma entaum fica assim

Boa= 1

e vai ter uma outra opção caso ele acerte a posição correta dentro da string senha vamos chama de:

excelente

ex

senha = 1234

ele digita: 1278

excelente: 2

e como eu posso fazer isso ?

lembrando a variavel BOA e uma posição qualquer de um numero correto dentro da String Senha
e o excelente e a posição correta dentro da string senha

desde já obrigado




1 user(s) are reading this topic

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq