Ir para conteúdo
Fórum Script Brasil
  • 0

Como cancelar evento pai em HTML?


Alan Bravin

Pergunta

Bom dia!

Estou desenvolvendo um site em PHP e tenho uma página de cadastro onde dentro da mesma é incluída uma outra página para listar os contatos daquele cadastro.

Esta página consiste em uma table onde ao dar clique sobre a linha é chamado a tela para edição do contato. Porém, na mesma linha há uma imagem com um "X" onde ao dar clique deveria chamar a ação de exclusão do contato.

O problema é que, como ambos deveriam ser chamados no clique, a ação da imagem é cancelada já que o OnClick do pai (<tr> nesse caso) prevalece. Sendo assim, ao clicar sobre o "X", é chamado a tela de edição de contatos.

Já tentei utilizar os comandos cancelBubble e stopPropagation e até funcionou em certo momento mas, devido a alguma alteração posterior parou.

Gostaria de saber se alguém sabe como eu poderia fazer para que o clique na imagem não interfira no clique da linha, ou seja, ao clicar na imagem seja executado uma ação e na linha outra.

Segue abaixo uma imagem da página e em seguida o código da parte de listagem de contatos.

Obrigado.

prospects.jpg

<a class="Botao" id="BotaoNovoContato">Novo</a>
<table width="100%" cellspacing="0" class="Tabela">
  <tr>
    <th>
      Nome
    </th>
    <th>
      Cargo
    </th>
    <th>
      e-Mail
    </th>
    <th style="width:50px" >
      <img src="../recursos/imagens/icones/email.png" width="24" 
        height="24" alt="Permite enviar e-mail para o contato?" title="Permite enviar e-mail para o contato?" /> 
    </th>
    <th>
      Fone
    </th>
    <th>
      Celular
    </th>
    <?php
      if($_SESSION['Usuario']->Admin)
      {
    ?>
    <th width="20px">
      Exc.
    </th>
    <?php
      }
    ?>
  </tr>
  <?php
    if(isset($ResultSet))
    {
      while($Contato = $ResultSet->ObterProximo())
      {
  ?>
  <tr OnClick="
    window.open('EdicaoContato.php?Editar=<?php echo $Contato->Id ?>',
    'edicaocontato',
    'width=600,height=450,scrollbar=no,toolbar=no');">
    <td>
      <?php echo $Contato->NomeContato ?>
    </td>
    <td width="200">
      <?php echo $Contato->CargoContato ?>
    </td>
    <td  width="300">
      <?php echo $Contato->EmailContato ?>
    </td>
    <td align="center">
      <?php echo $Contato->PermiteEnvioEmail ?>
    </td>
    <td width="100">
      <?php echo $Contato->FoneContato ?>
    </td>
    <td width="100">
      <?php echo $Contato->CelularContato ?>
    </td>
    <?php
      if($_SESSION['Usuario']->Admin)
      {
    ?>
    <td  width="20px" align="center">
      <input type="hidden" name="CONTATOPROSPECTSGPID" id="CONTATOPROSPECTSGPID" value="<?php echo($Contato->Id); ?>"/>
      <img id="ImgExcluir" onclick="ExcluirContato()" src="../recursos/imagens/icones/excluir.gif" alt="Excluir" title="Excluir" />
    </td>
    <?php
      }
    ?>
  </tr>
  <?php
      }
    }
  ?>
</table>
&lt;script type="text/javascript">
  function NovoContato()
  {
    if('<?php echo($_GET['PROSPECTSGPID']); ?>' == '')
      alert('E necessario salvar o prospect antes de inserir contatos.');
    else
      window.open('EdicaoContato.php?Inserir=<?php echo($_GET['PROSPECTSGPID']); ?>',
        'edicaocontato', 'width=600,height=450,scrollbar=no,toolbar=no');
  }
  
  function ExcluirContato()
  {
    if(window.event)
      window.event.cancelBubble = true;
    else if(Evento && Evento.stopPropagation)
      Evento.stopPropagation();
    
    function VerificaResultado(Resultado)
    {
      Resultado = eval(Resultado);
      if(Resultado) //se o resultado não estiver vazio
        alert(Resultado);
      else
      {
        alert('Dados excluidos.');
        CarregarContatos();
      }
    }
    
    if(confirm('Deseja mesmo excluir este contato?'))
    {
      var Dados = 'CONTATOPROSPECTSGPID=' + encodeURIComponent(document.getElementById('CONTATOPROSPECTSGPID').value);
      Ajax('/Sockets/ExcluiContato.php', 'POST', Dados, VerificaResultado);
    }
  };

  var BotaoNovoContato = document.getElementById('BotaoNovoContato');
  BotaoNovoContato.addEventListener('click', NovoContato, false);
</script>

Link para o comentário
Compartilhar em outros sites

0 respostass a esta questão

Posts Recomendados

Até agora não há respostas para essa pergunta

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...