Ir para conteúdo

POWERED BY:

Arquivado

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

heavymetal

Chamar a função ajax a partir de um div

Recommended Posts

Olá pessoal, estou com uma dúvida

Normalmente chamo a função ajax a partir de um select, usando o evento onchange

Assim:

<select id="especialidade" name="especialidade" size="1" tabindex="1" title="Selecione a especialidade" onChange="defineespecialidade()">
Porém precisaria chamar ela a partir de um div, tipo, o que seriam as opções do select mostrar como linhas

Ex:

Especialidade 1

Especialidade 2

Especialidade 3

Precisaria usar isso como um link, qe na verdade seria o gatinho da função

Quando uso o select ao selecionar um valor ele é o gatilho, mas aqui não to tendo ideia de como fazer

Quero que quando for selecionada a especialidade carregue os profissionais daquela especialidade

As funçõea e a página retornada já estão todas prontas e funcionando, mas como select

E precisaria que funcionassem do jeito citado acima

Se alguém puder dar um help

Desde já agradecido

Compartilhar este post


Link para o post
Compartilhar em outros sites

use o evento onclick para disparar, em vez de usar o onchange

 

lembrando de passar como parâmetro em cada onclick, oque você precisa enviar para fazer a consulta SQL.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigado pela atenção amigo

No caso do select eu recebia o valor com essa função

function defineespecialidade() {
	esp_id = document.getElementById("especialidade").value;
	ajaxHTML("idespecialidade","pega_especialidade.php?esp_id=" + esp_id);
}	
Agora sem o select não to sabendo como enviar o valor

usaria um link chamando a função?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Consegui fazer, pode fechar o tópico

Fica a solução que usei, se alguém precisar

echo "<a href=\"#\" onclick=\"defineespecialidade()\"><div id=\"especialidade\" name=\"especialidade\" value=\"$listaespecialidade[0]\" class=\"formatamedico\">$listaespecialidade[1]</div></a>";

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá de novo

Na verdade parecia que tinha funcionado, mas a id não se altera

Na verdade não to sabendo passar ela no link

Se alguèm souber como fazer e puder dar um help

Vou desenvolver o resto da página e depois tentar ajeitar este problema, pq já quebrei a cabeça nele

Compartilhar este post


Link para o post
Compartilhar em outros sites

Use parâmetros !

function defineespecialidade( esp_id ) {
        ajaxHTML("idespecialidade","pega_especialidade.php?esp_id=" + esp_id);
}

e então os teus links, seriam coisas como:

echo '<a href="#" onclick="defineespecialidade( '.$listaespecialidade[0].' )">'.$listaespecialidade[1].'</a>';

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigado Willian, desse jeito funcionou, mas agora to com outro probleminha, acho que o último dessa pagina

Emabixo do code par listar eu coloco o code com a div alvo, fica assim:

<?php
$listaespecialidades = @mysql_query("SELECT esp_id, esp_especialidade FROM especialidades ORDER BY esp_especialidade ASC");
while ($listaespecialidade = @mysql_fetch_row($listaespecialidades)) {	
	echo "<a href=\"#\" onclick=\"defineespecialidade('".$listaespecialidade[0]."')\" class=\"formatamedico\">$listaespecialidade[1]</a>";
	echo "<span id=\"idespecialidade\"></span>";
}
?>
Porém eu precisaria que fosse abrindo a div alvo abaixo de cada especialidade, e ela abre sempre embaixo da primeira especialidade

Se colocar a div alvo fora do laço tb abrirá sempre no mesmo lugar, embaixo de todas as especialidades

tentei fazer desse jeito e usando mysql_result, e testando o valor da id, mas não consegui fazer funcionar

Ex:

Especialidade 1

Especialidade 2

Especialidade 3

 

Clica em especialidade 1

Fica

Especialidade 1

Pagina a ser incluida

Especialidade 2

Especialidade 3

 

Clica em especialidade 2

Fica

Especialidade 1

Especialidade 2

Pagina a ser incluida

Especialidade 3

 

Clica em especialidade 3

Fica

Especialidade 1

Especialidade 2

Especialidade 3

Pagina a ser incluida

 

Do jeito que está ele sempre carrega a página a ser incluida embaixo da especialidade um

Tem como fazer pra ele comparar a id e carregar embaixo da respectiva especialidade?

 

Mais uma vez, obrigado pela atenção

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você não deve repetir IDs numa mesma página.

isso aqui:

echo "<span id=\"idespecialidade\"></span>";
dentro do loop é causa do erro.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mais uma vez agradecido

Vou tentar usar o mysql_result e tratar um resultado de cada vez, criando uma função para cada especialidade

assim não repete o id e deve funcionar

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ai você vai gerar outro erro, pois o result é lento.

uma idéia é fazer até algo sequencial:

echo '<span id="idespecialidade'.$i.'"></span>';

sendo $i um contador, à ser incrementado à cada volta do loop.

 

Mas 'mais fácil', seria fazer logo:

echo '<span id="idespecialidade'.$listaespecialidade[0].'"></span>';

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.