Jump to content
God9ps

Ajuda Jquery e PHP... Com a cabeça às voltas....

Recommended Posts

God9ps

Boas...

Tenho um formulário de registo no qual faço a validação do nome de utilizador em tempo real com Jquery. À medida que vamos preenchendo os campos vamos fazendo a validação e caso seja correcta mudamos o Focus() para o campo seguinte, caso seja incorrecta o focus() mantém-se no campo actual até ser introduzido correctamente.

Funciona bem em todos os campo com exceção do campo "utilizador" que para além de validar o campo, verifica na bd se o utilizador já existe. Funciona corretamente, só que quando encontra que o utilizador já existe na BD pretendo que o focus() se mantenha no campo e salta sempre para o campo seguinte. Já estou de olhos em bico e não consigo resolver... deixo o código.

javascript

$(document).ready(function(){
  $("#utilizador").blur(function() {
   $('#status').html('<img src="http://127.0.0.1/EasyStudy/images/loading.gif" align="absmiddle"> Checking availability...');
  var usr = $("#utilizador").val();
  if (usr == ''){
   $("#utilizador").focus();
   $('#status').html('Preenchimento Obrigatorio');

  }else{
   $.get("registo.php", {utilizador: usr}, function(resposta){
 $("#status").html(resposta);
   });
  }

 });

});

registo.php

if(isset($_REQUEST['utilizador'])) {
  $username = $_REQUEST['utilizador'];

 // echo $username;
 $sql_check = mysqli_query($con,"SELECT * FROM login WHERE utilizador ='".$username."'")
  or die(mysqli_error());

 if(mysqli_num_rows($sql_check)) {
  echo "Utilizador em uso!";
  echo "<script>$('#utilizador').focus();return false;</script>";
  die();

 } else {
  echo 'OK';
  die();
 }


 }

formulario

<tr>
				    <td>

					    <label>Utilizador</label>
					    <br>
					    <input id="utilizador" name="utilizador" type="text" maxlength="12" size="40" /><span id="status" class="erro"></span>
				    </td>
			    </tr>

		 <tr>
			 <td>
				 <label>Password</label>
				    <br>
				    <input id="senha" name="senha" type="password" maxlength="12" size="40" />
				    <span id="statussenha" class="erro"></span>
			    </td>
		    </tr>

Alguém que me ajude por favor...

Share this post


Link to post
Share on other sites
HappyHippyHippo

estás mesmo a dizer que estás a alterar o focus programaticamente, sem ser resultado de clicar num botão de envio ?

consegues dizer um único site decente que faça isso ? é que se eu visse algo a fazer algo que eu não mandei fazer, a primeira coisa que eu faria seria "ir embora"

segundo, a minha recomendação é ter o PHP a retornar JSON que será processado pelo javascript e tomar a acção de acordo com a informação respondida pelo servidor


IRC : sim, é algo que ainda existe >> #p@p

Share this post


Link to post
Share on other sites
God9ps

A ideia é mesmo inserir um utilizador que esteja disponivel... tipo, para quê deixar a pessoa inserir um user que não esteja disponivel? A ideia de manter o foco nesse campo é inerir um user válido e prosseguir com o registo. Faz ideia do porquê de ele não manter o foco no campo do utilizador?

Share this post


Link to post
Share on other sites
HappyHippyHippo

A ideia é mesmo inserir um utilizador que esteja disponivel... tipo, para quê deixar a pessoa inserir um user que não esteja disponivel? A ideia de manter o foco nesse campo é inerir um user válido e prosseguir com o registo.

continua a ser algo que no meu ponto de vista não faz sentido

Faz ideia do porquê de ele não manter o foco no campo do utilizador?

faço

$(document).ready(function(){
  $("#utilizador").blur(function() {           // estás a fazer a verificação quando o elemento PERDE o focus
   $('#status').html('<img src="http://127.0.0.1/EasyStudy/images/loading.gif" align="absmiddle"> Checking availability...');
  var usr = $("#utilizador").val();
  if (usr == ''){
   $("#utilizador").focus();                   // retornas o focus porque os dados do campo foram invalidados
   $('#status').html('Preenchimento Obrigatorio');
  }else{
   $.get("registo.php", {utilizador: usr}, function(resposta){
     $("#status").html(resposta);              // isto é erro ou não ? se é erro, onde está a "recuperação" de focus por parte do elemento ?
   });
  }
 });
});

como disse anteriormente :

a minha recomendação é ter o PHP a retornar JSON que será processado pelo javascript e tomar a acção de acordo com a informação respondida pelo servidor


IRC : sim, é algo que ainda existe >> #p@p

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.