GUJ Discussões   :   últimos tópicos   |   categorias   |   GUJ Respostas

[PHP/Javascript] Verificação de TextField e Alteração de Select? [RESOLVIDO!]


#1

Galera to tentando fazer um formulário da seguinte forma:

Se um TextField estiver como vazio ("") um Select aparece um opção X se o TextField estiver diferente de vazio o Select aparece uma opção Y... Parece ser algo bem simples, pois estou usando PHP e Javascript, porém ele não muda de acordo com a lógica desejada! :cry:

O formulário ta bem grande e como tudo está correto menos isso, vou colocar somente a função e a parte do formulário correspondente!

<?php session_start();?>
//Essa seria a função que criei!
<script type="text/javascript">
 function teste(){	
 		<?php 
			unset($_SESSION["status_1"]); 
			unset($_SESSION["status_2"]);
		?>
		if(cliente.data_visita.value == ""){
			alert("Testando Vazio!");
			<?php $_SESSION['status_1'] = "VAZIO"; ?>	
		}
		if(cliente.data_visita.value != ""){
			<?php $_SESSION['status_2'] = "CHEIO"; ?>
			alert("Testando Cheio!");
		}
	}
</script>
//-----------------------------------------------------------------
//Aqui é onde deveria alterar de acordo com a lógica.
<select name="status">  
    <?php if($_SESSION['status_2']=="CHEIO"){?>
    	<option> AGENDADO </option>
    <?php }?>
  	<?php if($_SESSION['status_1']=="VAZIO"){?>
    	<option> PENDENTE </option>
    <?php }?>
</select>
//-----------------------------------------------------------
//Esse é o botão do formulário
<input type="submit" Onclick="teste()" class="formulario" id="botao" value="ALTERAR" "/>

Esse diabo sempre fica como AGENDADO no Select... Se alguém souber onde está o erro ou puder dar uma dica fico muito grato!

Abraço!


#2

Isto

cliente.data_visita

de onde vem?


#3

Tipo, tenho a função javascript que postei e um formulário chamado 'cliente' na página, aí está analisando o campo (TextField) 'data_visita' do formulário.

É o único formulário da página...


#4

Só não entendo por que fazer a validação em java, sendo que isso pode ser feito via PHP

$ver = $_GET['data_visita'];//$_POST['data_visita'] caso seja post
if($ver != ""){
//faz o que tem que fazer
}else{
//faz outra coisa
}

#5

É fico meio louco porque fui fazendo vários testes (gambiarras) para tentar fazer rodar, mais a ideia inicial era fazer em Javascript para que conforme o usuário preenchesse o formulário já alterasse... e não precisasse enviar o formulário para que isso acontecesse.

Por isso coloquei Javascript. Mas foi erro meu não ter explicado ao certo como deveria ser.


#6

Entendi.
Você não precisa de PHP para isto, então.
Se o 'data_visita' está vazio, já seta o elemento selecionado na combobox.


#7

É verdade, não tem necessidade mesmo.

Porém eu estava tentando usar o PHP como uma saída (gambiarra), porque preciso por meio de uma verificação de TextField alterar o valor de um Select... Enquanto eu estiver preenchendo o formulário o Select tem que ir mudando de valor de acordo com os campos preenchidos.

Por exemplo, tenho os valores PENDENTE, CADASTRADO e COMPLETO em meu SELECT (lista)... Se preencher somente NOME no formulário o Select muda pra PENDENTE; se preencher NOME e TELEFONE muda para CADASTRADO; se preencher NOME, TELEFONE, CPF e ENDEREÇO muda pra COMPLETO no Select.

Seria essa a intenção do código, mas não achei muita coisa sobre isso na net...


#8

Tá, mas com javascript você faz isso com uma das mãos nas costas.
Tem muito exemplo na net.


#9

Desculpa a demora pra responder...

Mas então... Até peguei uns exemplos na net e fiz uns esquemas mais só alterando TextField aí deu certinho, e aprendi como fazer...
Já com Select (lista) não achei nada parecido com oque estou precisando... Tentei meio que adaptar oque tinha feito nos TextField mais não deu muito certo não!

Se souber como eu posso procurar (algum nome de função) ou um site onde acha um exemplo parecido agradeço!

Abraço!


#10

Camarada, sugiro, veementemente que você estude javascript.
É muito, muito simples mesmo.
Enfim, aí vai um exemplo, é o máximo que posso fazer sem fazer o trabalho todo por ti.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Documento sem título</title>
<script type="text/javascript">
function setSelected(){
	var e = document.getElementById('txt').value;
	alert(e);
	switch(e.length){
		case 1:
			document.getElementById('op1').selected = "selected";
		break;
		case 2:
			document.getElementById('op2').selected = "selected";
		break;
		case 3:
			document.getElementById('op3').selected = "selected";
		break;
		case 4:
			document.getElementById('op4').selected = "selected";
		break;
		case 5:
			document.getElementById('op5').selected = "selected";
		break;
	}
}
</script>
</head>
<body>
	<input type="text" id="txt" onkeyup="setSelected();" />
	<select id="sel" name="selec">
    	<option id="op1">Op1</option>
    	<option id="op2">Op2</option>
    	<option id="op3">Op3</option>
    	<option id="op4">Op4</option>
    	<option id="op5">Op5</option>
    </select>
</body>
</html>

Como pode perceber, o textfield contém a chamada à função setSelected, no evento onkeyup, que faz com que, dependendo do tamanho da string, a opção correspondente selecionada no combobox txt seja setada.
Com algumas modificações, com certeza fará o que você precisa.
1 - Altere a chamada do onkeyup para o evento devido (acho que o onblur)
2 - Altere o switch/case para que ele atenda sua necessidade (se preciso, lembre-se que switch/case é uma implementação mais evoluída de if/else).
3 - Como está buscando os valores de banco de dados, crie dinamicamente o id de cada option, tanto no html gerado, quanto no script.


#11

Irei estudar sim, já não é a primeira vez que passo dias para conseguir uma função simples... Pois não entendo nada de JS. :?

Todo mundo diz isso, porém sempre que dou uma olhada em funções javascript (mesmo já tendo algum conhecimento de programação) o código não me parece muito amigável, mas sendo fácil ou não aprenderei esse diacho! :evil:

Machado muito obrigado pelo exemplo e pelas dicas cara, mesmo não conhecendo javascript com seu exemplo ficou fácil entender oque o código faz (fiquei animado em aprender esse tróço), agora pra deixar da forma que preciso será muito simples...

Valeu mesmo. Abraço! :wink:


#12

Então, camarada, eu comecei com C/C++. Passei pelo PHP e depois Java, C# e ASP.NET, tendo visto, também, um pouco de ruby e ruby on rails. Posso garantir que javascript é muito simples por isto.
No site http://www.w3school.com existe um ótimo material sobre javascript. Comece por ali.


#13