Ir para conteúdo

Arquivado

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

xandregar

Checkbox desativar input

Recommended Posts


minha dúvida é a seguinte, tenho uma estrutura de repetição em php ( while ) que gera vários inputs do tipo text e checkbox

Tenho o seguinte código:


<script type="text/javascript"



<script language='JavaScript'>


$(document).ready(function() {

$('#check').click(function() {

if ($(this).is(':checked')) {

$('#campo1[]').attr('disabled', true);

} else {

$('#campo1[]').attr('disabled', false);

}

});

});


</script>


<tr height='20'>

<td>NOME:<INPUT id='campo1' name='campo1[]'size='18'value='teste' >

</TD>

<TD>DATA:<INPUT name='data[]' size='9' value='11/11/2016'>

</TD>

<input type='checkbox' id='check' name='check'>

</tr>



O campo nome deverá ter o input desabilitado caso o checkbox selecionado. Ocorre que esse campo1 se repete e o checkbox ativado só desabilitar o primeiro campo. Como faço para o seletor do jquery funciona para todos campos?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá pessoal


Achei a resposta e vou compartilhar com vocês


Neste script tem um problema que é o ID se repetir, isso não pode acontecer. Poderá mudar para classe ou usar o name para selecionar o elemento.


Também poderá ter um resultado mais correto colocando o checkbox dentro de um TD.


Após fazer essas mudanças poderá usar a tag TR que agrupa todos os elementos que está usando como referência. Ficaria assim:


  1. <script>
  2. $(document).ready(function(){

  3. $("[type=checkbox]").on("change", function(){

  4. //Adicione a classe campo1 ao input que irá desabilitar
  5. var $input = $(this).closest("tr").find(".campo1");

  6. if (this.checked === true) {

  7. $input.attr('disabled', 'disabled');

  8. } else {

  9. $input.removeAttr('disabled');

  10. }

  11. });

  12. });
  13. </script>

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.