Erro ao pegar valor de componente no javascript

2 respostas
P

Bom dia pessoal,

estou tentando fazer agora especificamente uma telinha de login e uma telinha de cadastro rápido ao meu site... porém estou com um probleminha:

abaixo o código do meu fonte login.php, aonde ele usa o javascript que estou com problemas
<script language="javascript">
  $(function() {
    var name = $( "#name" ),
	    user = $( "#user" ),
        email = $( "#email" ),
        password = $( "#password" ),
	    repassword = $( "#repassword" ),
		
		usl = $( "#usl" ),
		psl = $( "#psl" ),
		
        allFields = $( [] ).add( name ).add( user ).add( email ).add( password ).add( repassword ).add( usl ).add( psl ),
        tips = $( ".validateTips" );

	function sleep(milliseconds) {
		var start = new Date().getTime();
		for (var i = 0; i < 1e7; i++) {
		  if ((new Date().getTime() - start) > milliseconds){
			break;
		  }
		}
	  }

    function updateTips( t ) {
      tips
        .text( t )
        .addClass( "ui-state-highlight" );
        setTimeout(function() {
        tips.removeClass( "ui-state-highlight", 1500 );
      }, 500 );
    }
 
    function checkLength( o, n, min, max ) {
      if ( o.val().length > max || o.val().length < min ) {
        o.addClass( "ui-state-error" );
        updateTips( "Tamanho do campo " + n + " deve conter entre " + min + " e " + max + " caracteres." );
        return false;
      } else {
        return true;
      }
    }
 
    function checkPasswords( pass, repass) {
      if ( pass.val() != repass.val() ) {
        pass.addClass( "ui-state-error" );
        updateTips( "Campos 'Senha' e 'Confirmar senha' estao diferentes, verifique!." );
        return false;
      } else {
        return true;
      }
    }
	
    function checkRegexp( o, regexp, n ) {
      if ( !( regexp.test( o.val() ) ) ) {
        o.addClass( "ui-state-error" );
        updateTips( n );
        return false;
      } else {
        return true;
      }
    }
 
    $( "#dialog-form" ).dialog({
	
      autoOpen: false,
      height: 550,
      width: 450,
      modal: true,
      buttons: {
        "Criar nova conta": function() {
          var bValid = true;
          allFields.removeClass( "ui-state-error" );

          bValid = bValid && checkLength( name, "nome", 3, 16 );
		  bValid = bValid && checkLength( user, "usuario", 3, 16);
          bValid = bValid && checkLength( email, "email", 6, 80 );
          bValid = bValid && checkLength( password, "senha", 5, 16 );
		  bValid = bValid && checkLength( repassword, "resenha", 5, 16);
		  bValid = bValid && checkPasswords( password, repassword);
 
//          bValid = bValid && checkRegexp( name, /^[a-z]([0-9a-z_])+$/i, "Nome deve conter somente letras a-z, A-Z, 0-9, underline e começar com uma letra." );
          // From jquery.validate.js (by joern), contributed by Scott Gonzalez: http://projects.scottsplayground.com/email_address_validation/
          bValid = bValid && checkRegexp( email, /^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/i, "Email inválido. Ex.: [email removido]" );
          bValid = bValid && checkRegexp( password, /^([0-9a-zA-Z])+$/, "Password field only allow : a-z 0-9" );
	  
          if ( bValid ) {
			  updateTips("");

				
                function sucessoInsertUser(retorno) {
					updateTips('Usuario inserido com sucesso!');					
					document.location.reload();
				}
				
				function erroInsertUser() {
					alert('Erro ao inserir usuario no banco de dados');
				}				
				
				function sucessoValidaUser(retorno) {
					if (retorno == 'OK') {
						$.ajax({
							type: 'POST',
							url: 'includes/InsereUsuario.php',
							data: {name : cadastro.name.value, user: cadastro.user.value, pass : cadastro.password.value, mail : cadastro.email.value}
						}).done(sucessoInsertUser).fail(erroInsertUser);	
					} else {
						user.addClass( "ui-state-error" );
						updateTips("Usuario " + cadastro.user.value + " ja cadastrado, tente outro!");
					}
				}
				
				function erroValidaUser() {
					alert('Erro ao validar usuario no banco de dados');
				}

				$.ajax({
					type: 'POST',
					url: 'includes/validaUsuario.php',
					data: {user : cadastro.user.value}
				}).done(sucessoValidaUser).fail(erroValidaUser);
		  }
        },
        Cancelar: function() {
          $( this ).dialog( "close" );
        }
      },
      close: function() {
        allFields.val( "" ).removeClass( "ui-state-error" );
      }
    });
	
	$( "#dialog-form-login" ).dialog({
	
      autoOpen: false,
      height: 320,
      width: 450,
      modal: true,
      buttons: {
        "Login": function() {
          var bValid = true;
          allFields.removeClass( "ui-state-error" );

		  bValid = bValid && checkLength( usl, "usuario", 3, 16);
          bValid = bValid && checkLength( psl, "senha", 3, 16 );
	  
          if ( bValid ) {
			  updateTips("");

				
                function sucessoLogin(retorno) {
					if (retorno == 'OK') {
						updateTips('Login efetuado com sucesso!');
						
						document.location.reload();
					} else {
						updateTips('Usuario e/ou senha invalidos!');
						user.addClass( "ui-state-error" );
					}
				}
				
				function erroLogin() {
				    user.addClass( "ui-state-error" );
					updateTips('Usuario e/ou senha invalidos!');
				}				
				
				$.ajax({
					type: 'POST',
					url: 'includes/logar.php',
					data: {user : login.usl.value, pass : login.psl.value}
				}).done(sucessoLogin).fail(erroLogin);
		  }
        },
        Cancelar: function() {
          $( this ).dialog( "close" );
        }
      },
      close: function() {
        allFields.val( "" ).removeClass( "ui-state-error" );
      }
    });	
 
    $( "#create-user" )
      .button()
      .click(function() {
        $( "#dialog-form" ).dialog( "open" );
      });
	  
	$( "#login-user" )
      .button()
      .click(function() {
        $( "#dialog-form-login" ).dialog( "open" );
      });
	  
	$( "#disconnect" )
      .button()
      .click(function() {
        <?php session_destroy() ?>
		document.location.reload();
      });
  });  
  
  </script>  
  
  <style>
    body { font-size: 62.5%; }
    label, input { display:block; }
    input.text { margin-bottom:12px; width:95%; padding: .4em; }
    fieldset { padding:0; border:0; margin-top:25px; }
    h1 { font-size: 1.2em; margin: .6em 0; }
    div#users-contain { width: 350px; margin: 20px 0; }
    .ui-dialog .ui-state-error { padding: .3em; }
    .validateTips { border: 1px solid transparent; padding: 0.3em; }
	.btn_novo {height:38px; width:110px; background:#069; border:0px solid #000; color:#FFF; }
	.btn_novo:hover{ background:#09C; cursor:pointer; color: #0000; }
	.btn_login {height:38px; width:90px; background:#069; border:0px solid #000; color:#FFF; }
	.btn_login:hover{ background:#09C; cursor:pointer; color: #0000; }
	.btn_desconctar { height:38px; width:90px; background:#069; border:0px solid #000; color:#FFF; }
	.btn_desconctar:hover{ background:#09C; cursor:pointer; color:0000; }
  </style>
 
<div id="dialog-form" title="Criar novo usuario">
  <p class="validateTips">Todos os campos sao obrigatorios.</p>
 
  <form name="cadastro">
  	<fieldset>
		<label for="name">Nome</label>
	    <input type="text" name="name" id="name" class="text ui-widget-content ui-corner-all" />
	    <label for="name">Usuario</label>
	    <input type="text" name="user" id="user" class="text ui-widget-content ui-corner-all" />    
	    <label for="email">Email</label>
	    <input type="text" name="email" id="email" value="" class="text ui-widget-content ui-corner-all" />
	    <label for="password">Senha</label>
	    <input type="password" name="password" id="password" value="" class="text ui-widget-content ui-corner-all" />
		<label for="repassword">Confirmar Senha</label>
	    <input type="password" name="repassword" id="repassword" value="" class="text ui-widget-content ui-corner-all" />
	</fieldset>
  </form>

</div>

<div id="dialog-form-login" title="Login">
  <p class="validateTips"></p>
 
  <form name="login">
  	<fieldset>
	    <label for="name">Usuario</label>
	    <input type="text" name="usl" id="usl" class="text ui-widget-content ui-corner-all" />    
	    <label for="password">Senha</label>
	    <input type="password" name="psl" id="psl" value="" class="text ui-widget-content ui-corner-all" />
	</fieldset>
  </form>

</div>
 
<!------------------------------------------------------------------------------------------------------------------------------------------------>


					<?php
						include_once("config.php");
						include "funcoes.php";
					?>
<ul>
											<li>	
                                        		<?php if (!isset($_SESSION["logado"])) { ?>								
												<button id="create-user" class="btn_novo">Novo Usuario</button> 
                                                <button id="login-user" class="btn_login">Login</button>
												<?php } else { ?>
											    <button id="disconnect" class="btn_desconctar">Desconectar</button>
												<?php } ?>
											</li>

vamos ao problema, quando eu tinha somente a tela de cadastro de usuário, tudo funcionava como uma maravilha, porém quando adicionei a tela de login, tive um problema que não faz o login...

ele da erro no debugger do ie é: SCRIPT5007: Não é possível obter valor da propriedade 'value': o objeto é nulo ou não definido

o estranho é que no cadastro tudo funciona e usei o mesmo para cola do login...

Grato desde já pela ajuda,

Pablo R. Harger.

2 Respostas

R

Está usando jQuery correto?
Teste usando $(document).ready() por exemplo.

tipo:

$(document).ready(function(){ //Todo seu código aqui dentro... });

Obs.: não olhei o código inteiro, talvez não seja apenas isso…

Abraço!

P

Boa noite Rebinho, eu usei o que você mandou, porém no console do chrome quando clico no botão logar, ele retorna o seguinte erro:

Uncaught TypeError: Cannot read property ‘value’ of undefined localhost:195
$.dialog.buttons.Login localhost:195
props.click jquery-ui.js:9977
jQuery.event.dispatch jquery-1.9.1.js:3074
elemData.handle

Não sei mais o que pode ser, fiz várias alterações no fonte e nada…

Grato pela ajuda,

Pablo R. Harger.

Criado 15 de março de 2013
Ultima resposta 20 de mar. de 2013
Respostas 2
Participantes 2