2017-10-01 4 views
0

J'ai une boucle while do PHP pour générer des champs de saisie de texte, radio et checkbox. Les champs texte et radio sont désactivés par défaut et je veux les activer en cochant la case correspondante. J'ai assigné des identifiants aléatoires et essayé de nombreuses solutions jQuery mais j'ai toujours des problèmes.Activer/Désactiver les entrées de texte et de radio générées aléatoirement avec la case à cocher dans jQuery

code:

<?php 
$query = "SELECT * FROM `test` "; 
$result = mysql_query($query); 
$count = 0; 
    do{ 
    $row = mysql_fetch_array($result); 
    if($row){ 
    $id = $row['id']; 
    $name = $row['name']; 
?> 

    <tr> 
     <td><?php echo $name; ?></td> 
     <td><input type="text" id="txt_<?php echo $count; ?>" class="txt form-control" name="txt" style="width:200px;" disabled /></td> 
     <td><input type="radio" id="radio_<?php echo $count; ?>" class="rdo" name="rdo<?php echo $count; ?>" value="yes" disabled /></td> 
     <td><input type="radio" id="radio_<?php echo $count; ?>" class="rdo" name="rdo<?php echo $count; ?>" value="no" disabled /></td> 
     <td><input type="checkbox" id="check_<?php echo $count; ?>" class="checks" name="check" /></td> 
    </tr> 

<?php 
    $count = $count + 1; 
    } 
} 
while($row); 
?> 

jQuery:

<script> 
    $('#check_<?php echo $count; ?>').on('change', function(){ 
     if($(this).is(':checked')){ 
      $('#txt_<?php echo $count; ?>').prop('disabled', false); 
      $('#radio_<?php echo $count; ?>').prop('disabled', false); 
     }else{ 
      $('#txt_<?php echo $count; ?>').prop('disabled', true); 
      $('#radio_<?php echo $count; ?>').prop('disabled', true); 
     } 
    }); 
</script> 

Ma solution:

$(function() { 
     $('input[type=checkbox]').change(function() { 
     if (this.checked) { 
      $(this).closest('tr').find('input[type=text]').prop('disabled', false); 
      $(this).closest('tr').find('input[type=radio]').prop('disabled', false); 
     } else { 
      $(this).closest('tr').find('input[type=text]').prop('disabled', true); 
      $(this).closest('tr').find('input[type=radio]').prop('disabled', true); 
     } 
     }); 
    }); 

Cette fonction Travaillé charmes :)

+0

Pouvez-vous montrer votre code jquery ce que vous avez essayé jusqu'à présent ?? –

+0

J'ai essayé environ 5 codes qui fonctionnent pour les champs d'entrée simples mais échouent car je leur attribue des ID aléatoires – Simbolae

Répondre

0
$(document).on("change", ".checks", function() { 
    if($(this).prop("checked")) { 
     $(this).parents("tr .txt").removeAttr("disabled"); 
     $(this).parents("tr .rdo").removeAttr("disabled"); 
    } 
}) 

Vous pouvez également écrire un script pour cela en utilisant class attribut comme ci-dessus.

+0

Cela ne fonctionne pas – Simbolae

+0

Avez-vous une erreur dans la console. Vérifiez simplement –

+0

Oui, je reçois une erreur: TypeError Uncaught: $ (...). Close n'est pas une fonction à HTMLInputElement. (0test.php: 89) à HTMLDocument.dispatch (jquery-2.2.2.min.js: 3) à HTMLDocument.r.handle (jquery-2.2.2.min.js: 3) – Simbolae

0

Cette fonction JQuery a fonctionné pour moi :)

$(function() { 
     $('input[type=checkbox]').change(function() { 
     if (this.checked) { 
      $(this).closest('tr').find('input[type=text]').prop('disabled', false); 
      $(this).closest('tr').find('input[type=radio]').prop('disabled', false); 
     } else { 
      $(this).closest('tr').find('input[type=text]').prop('disabled', true); 
      $(this).closest('tr').find('input[type=radio]').prop('disabled', true); 
     } 
     }); 
    });