• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

BMCouto

Problema em condição

10 mensagens neste tópico

Boas,

Tenho isto:

if(!(parseInt(num1) == num1) && !(num1 >= 1 && num1 <= 50)) {
	alert ('1º campo - Deve escolher um número entre 1 e 50, inclusive!');
	return false;
}

E ele deixa passar numeros inferiores a 1 e maiores q 50. Tambem ja tentei nao ir pela negativa ou seja fazer num1<1 && num1>50 e nao deu na mesma.

A condição está certa, mas penso que ha algo a interferir ai. Abaixo de um serie de condiçoes iguais a estas (mas com vars diferentes) tenho:

var numeros = new Array();

numeros[num1] = true;
if(numeros[num2]) { alert('Não pode repetir números!'); return false; } else { numeros[num2] = true; }
if(numeros[num3]) { alert('Não pode repetir números!'); return false; } else { numeros[num3] = true; }
if(numeros[num4]) { alert('Não pode repetir números!'); return false; } else { numeros[num4] = true; }
if(numeros[num5]) { alert('Não pode repetir números!'); return false; } else { numeros[num5] = true; }

Mas isto nao poderia anular a condiçao de cima logo duvido q o problema seja disto... outra coisa é que chamo o file ou seja isto esta num file.js e eu no page chamo <script type="text/javascript" src="file.js"></script>

Sao tudo cenas q nao deveriam interferir em nada com a condiçao mas pronto já dei tanta volta nisto q nao sei o q possa estar mal, portanto se alguem puder dao uma maozinha agradeço.

Cumprimentos!

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

não percebi muito bem o que querias, mas não será:

if(!(parseInt(num1) == num1) || !(num1 >= 1 && num1 <= 50))...

como tinhas se 'parseInt(num1)==num1' fosse verdadeiro toda a condição era falsa.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Acho que não, portanto se não estou em erro o que faço é:

Se a var num1 nao for um inteiro E se a var num1 nao for maior ou igual do q um E menor ou igual do q 50 ele dispara o alert, q é exactamente o q quero, ou seja so quero permitir numeros inteiros entre 1 e 50... ou ha maneira mais correcta de o fazer?

Obrigados e cumps!

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Mas o num1 não é um int pois não?

É que nesse caso vais comparar um int com uma string (suponho) e isso vai dar SEMPRE falso.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Se a var num1 nao for um inteiro E se a var num1 nao for maior ou igual do q um E menor ou igual do q 50 ele dispara o alert, q é exactamente o q quero, ou seja so quero permitir numeros inteiros entre 1 e 50... ou ha maneira mais correcta de o fazer?

como tu tens (e assumindo que a condição 'parseInt...' faz o que dizes), se num1 for um inteiro, '!(parseInt(num1)==num1)' é falso e como tal toda a expressão é falsa (false e qualquer outra coisa dá falso) logo não chama o 'alert', independentemente de o valor ser válido ou não.

logo o que tu queres é um ou e não um e.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Boas realmente tirando a negação já funciona, mas vendo bem o parseInt não é realmente o que pretendo pois ele converte a string para um int digamos assim... eu quero apenas negar tudo o q nao seja um int (mantendo a condição do maior que um e menor que 50), já tentei um regex, entre outras coisas e nada funcionou correctamente.

Alguem sabe como posso fazer isso?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

acho que o que tu queres é mais ou menos isto:

if( (int1==NaN) || !(int1<=50 && int1>=0))
{
  alert ('1º campo - Deve escolher um número entre 1 e 50, inclusive!');
  return false;
}

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Ora nem mais, muito obrigado :)

Já agora isto é capaz de nao ser o topico ideal uma vez que a condição é em PHP, mas uma vez que mete JS à mistura, é o seguinte:

$js = "<noscript>Para aceder correctemente a esta página e poder apostar certifique-se que tem o JavaScript activado!</noscript>";
if ($js == false) {
// code php todo da página
}

Isto está correcto? Ou seja o que quero é que caso o utilizador desactive o js não consiga "fugir" às condiçoes impostas pelo mesmo.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora