Ir ao conteúdo
  • Cadastre-se
fspjonny

JQuery RESOLVIDO Obter ID dinâmico usando JQuery

Posts recomendados

Como posso obter pelo JQuery no evento Click do botão o ID gerado dinamicamente para os Inputs?

 

<?php
for($a=0; $a < $info.length; $a++){
echo "<input type='text' id='op{$a}' value='{$info}'>";
echo "<input type='button' id='btn{$a}' value='Enviar'>";  
}
?>  

Saída:

<input type='text' id='op1' value='dado1'>
<input type='button' id='btn1' value='Enviar'>

<input type='text' id='op2' value='dado2'>
<input type='button' id='btn2' value='Enviar'>

....até que $a atinja a condição...

btn1 = pega o ID de op1

btn2 = pega o ID do op2

...etc...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá!
Você pode usar no input:button uma propriedade do tipo data-*, com valor igual a id do input:text veja:
 

<input type='text' id='op1' value='dado1'>
<input type='button' id='btn1' data-input='op1' value='Enviar'>

Use assim, no jquery:
 

$('input[type="button"]').click(function(){

alert($('input#'+$(this).data('input')).val());

});

Mas se forem elementos imediatamente adjacentes, não precisa do atributo data-*
Pode ser feito assim:

$('input[type="button"]').click(function(){

alert($(this).prev().val());

});

 

  • Curtir 1
  • Obrigado 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

@fspjonny

Ou você pode adicionar um elemento div para separar, e usar o each()  e siblings().

 

Por exemplo: Gere isto:

<div class="inputs">
<input type='text' class="text" name='dado' id='op1' value='dado1'/>
<input type='button' class="inputClass" id='btn1'  value='Enviar'/>
</div>

<div class="inputs">
  <input type='text' class="text" name='dado2' id='op2' value='dado2'/>
<input type='button' class="inputClass" id='btn2' value='Enviar'/>
</div>
 $('.inputs input.inputClass').each(function() {
      $(this).on('click',function(){    
          var id = $(this).attr('id');
          var value = $(this).siblings('input').val();
 
          alert("Botão: "+id + " clicado.  Dado a ser enviado: "+ value);
          
      });
   });

Veja um exemplo online com vários inputs gerado do laço de for: http://jsfiddle.net/dife/1y09hjav/34/

 

De qualquer forma, usar os data attributes podem facilitar muito a sua vida! A dica do colega acima é muito boa. :thumbsup:

 

Tente as duas formas e veja a que fica melhor no seu projeto! 

 

PS: No meu exemplo, eu já incluí o valor do campo input emcima do botão!

 

  • Obrigado 1

Compartilhar este post


Link para o post
Compartilhar em outros sites
11 horas atrás, washalbano disse:

Olá!
Você pode usar no input:button uma propriedade do tipo data-*, com valor igual a id do input:text veja:
 


<input type='text' id='op1' value='dado1'>
<input type='button' id='btn1' data-input='op1' value='Enviar'>

Use assim, no jquery:
 


$('input[type="button"]').click(function(){

alert($('input#'+$(this).data('input')).val());

});

Mas se forem elementos imediatamente adjacentes, não precisa do atributo data-*
Pode ser feito assim:


$('input[type="button"]').click(function(){

alert($(this).prev().val());

});

 

Perfeito!:thumbsup:

adicionado 2 minutos depois
11 horas atrás, DiF disse:

@fspjonny

Ou você pode adicionar um elemento div para separar, e usar o each()  e siblings().

 

Por exemplo: Gere isto:


<div class="inputs">
<input type='text' class="text" name='dado' id='op1' value='dado1'/>
<input type='button' class="inputClass" id='btn1'  value='Enviar'/>
</div>

<div class="inputs">
  <input type='text' class="text" name='dado2' id='op2' value='dado2'/>
<input type='button' class="inputClass" id='btn2' value='Enviar'/>
</div>

 $('.inputs input.inputClass').each(function() {
      $(this).on('click',function(){    
          var id = $(this).attr('id');
          var value = $(this).siblings('input').val();
 
          alert("Botão: "+id + " clicado.  Dado a ser enviado: "+ value);
          
      });
   });

Veja um exemplo online com vários inputs gerado do laço de for: http://jsfiddle.net/dife/1y09hjav/34/

 

De qualquer forma, usar os data attributes podem facilitar muito a sua vida! A dica do colega acima é muito boa. :thumbsup:

 

Tente as duas formas e veja a que fica melhor no seu projeto! 

 

PS: No meu exemplo, eu já incluí o valor do campo input emcima do botão!

 

Funciona perfeito também,  Obrigado!!!:thumbsup:

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Redes de Computadores - Gabriel Torres

PROMOÇÃO DE QUARENTENA

De R$ 39,90 por apenas R$ 9,90 só até as 23h59min desta sexta-feira 03/04/2020

CLIQUE AQUI E COMPRE AGORA MESMO!