Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Marcos Barbosa

Enviar valores para a janela modal

Recommended Posts

Pessoal, estou vendo um tutorial de Maujor sobre como abrir um janela dentro de uma página usando o jquery, então estou tentando adaptala para o que preciso fazer,

para isso preciso enviar valores pelo link e não estou conseguindo fazer.

O código inicial é assim:

<a href="#dialog" name="modal">T</a>
<!-- dessa forma funciona -->

 

Agora preciso passar valores no href +- assim

 

 <a href#dialog&id=<?php echo $id; ?>" name="modal">T</a> 
<!-- Quando tento passar os valores, não funciona.

 

Na div onde recebo os valores está assim:

<div id="boxes">
   <div id="dialog" class="window">
       <a href="#" class="close">Fechar [X]</a><br />
   </div> <!-- <div id='dialog' class='window'> --> 
</div> <!-- boxes -->

Compartilhar este post


Link para o post
Compartilhar em outros sites

Veja bem, eu tenho uma lista com todos os clientes, quando o operador clicar em um determindado cliente na mesma página onde está a listagem vai aparecer uma janela com algumas informações desse cliente.

Para isso, eu preciso passar o dados pelo link. Colocando no link:

<a href=#dialog>...</a>

funciona, a janela aparece da forma que quero, mas se eu colocar

<a href="#dialog?id = <?php echo $id ?>"

não funciona, ou seja, ele reconhece "#dialog?id = <?php echo $id ?>" como se fosse um nome só e ñ uma instrução

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vou acrescentar parte o código para melhor entendimento

<header>
		$('a[name=modal]').click(function(e) {
			e.preventDefault();

			var id = $(this).attr('href');

			var maskHeight = $(document).height();
			var maskWidth = $(window).width();

			$('#mask').css({'width':maskWidth,'height':maskHeight});

			$('#mask').fadeIn(1000);	
			$('#mask').fadeTo("slow",0.8);	

			//Get the window height and width
			var winH = $(window).height();
			var winW = $(window).width();

			$(id).css('top',  winH/2-$(id).height()/2);
			$(id).css('left', winW/2-$(id).width()/2);

			$(id).fadeIn(2000); 

		});

                       $('.window .close').click(function (e) {
			e.preventDefault();

			$('#mask').hide();
			$('.window').hide();
		});		

		$('#mask').click(function () {
			$(this).hide();
			$('.window').hide();
		});			

</header>
<td width="3%" class="img"><a href="#dialog?id=<?php echo $id; ?>" name="modal">T</a></td> 
<div id="boxes">
   <div id="dialog" class="window">
      <a href="#" class="close">Fechar [X]</a><br />
          <?php
  	$id_paciente = $_GET['id'];
	echo "Paciente :".$id_paciente;
         ?>
     </div> <!-- <div id='dialog' class='window'> --> 
</div> <!-- boxes -->

         <!-- Máscara para cobrir a tela -->
 		 <div id="mask"></div>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim, o que eu não estou entendendo é de onde vem esse $id.

Observe:

 

<a href="#dialog?id=<?php echo $id;?>

 

O $id, ele está imprimindo um valor NULL. Por que não tenta $_GET['id'];

 

Valeu.

 

PS: O seu PHP está habilitado?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim, o que eu não estou entendendo é de onde vem esse $id.

Observe:

 

<a href="#dialog?id=<?php echo $id;?>

 

O $id, ele está imprimindo um valor NULL. Por que não tenta $_GET['id'];

 

Valeu.

 

PS: O seu PHP está habilitado?

 

Bem, ñ coloquei o código completo pq imaginei q ñ precisava, mas esse $id pega o id do registro selecionado e está correto, como já tinha explicado no post acima, se eu mandar para uma outra página ele corretamente. Mas para simplificar minha dúvida, esqueça esse $id e coloque ali qualquer valor, tipo:

<a href="#dialog?id=<?php echo "isso é um teste"; ?>" 

Lá na div #dialog não vai acontecer nada, isso pq na função JQUERY:

 $('a[name=modal]').click(function(e) {
          e.preventDefault();  
          var id = $(this).attr('href'); 

ele está assumindo o nome da div="#dialig?valor colocado no PHP"

Quando na realidade ele deveria assumir o nome div="#dialog", mostrar os valores q estão na div, inclusive o valor passado pelo PHP.

 

Resumindo, dessa forma, ñ estou conseguindo enviar nenhum valor pelo PHP.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá parceiro, estava com exatamente o mesmo problema que você, e depois de muito bater cabeça encontrei uma solução, talvez não muito elegante, mas segue abaixo:

 

Eu direciono o link para a mesma pagina em meu exemplo a index.php:

<a href="index.php&idcliente=".<?php echo $id."?> name='modal'>

E no início da página :

<?php
if (isset($_GET['idcliente'])){?>
			<script type="text/javascript">
				$(document).ready(function() {
				
					var maskHeight = $(document).height();
					var maskWidth = $(window).width();
				
					$('#mask').css({'width':maskWidth,'height':maskHeight});
			
					$('#mask').fadeIn(1000);	
					$('#mask').fadeTo("slow",0.8);	
				
					//Get the window height and width
					var top = $(window).scrollTop()+10;
					var winW = $(window).width();
						  
					$('#dialog').css('top',  top);
					$('#dialog').css('left', winW/2-$('#dialog').width()/2);
				
					$('#dialog').fadeIn(500); 
				
				});
			</script>
		<?php
                     $id = $_GET['idcliente'];
                ?>

Obs, para funcionar, é necessário que você remova a primeira parte do script que realiza a mostra da janela, deixando somente as duas outras partes responsáveis por fechar a janela, dessa forma o script fica assim:

$(document).ready(function() {	
	$('.window .close').click(function (e) {
		e.preventDefault();
		
		$('#mask').hide();
		$('.window').hide();
	});		
	
	$('#mask').click(function () {
		$(this).hide();
		$('.window').hide();
	});			
	
});

Depois você pode usar o id que foi passado para a variável $id, dentro da janela:

<div id="dialog" class="window">
<a href="#" class="close">Fechar [X]</a><br />
<?php echo $id; ?>
</div>

É isso, espero ter ajudado. :closedeyes:

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.