J'ai des données que j'obtiens de la base de données et de la table avec des cases à cocher:

    <tbody>
        <tr class="full_qst">
            <td><?php echo $driver; ?></td>
            <td><?php echo $subdriver; ?></td>
            <td><?php echo $skill; ?></td>
            <td> <img alt="" src="imagesAssessment/check.png" class="check">
                <div class="mrk">
                    <label class="choice" for="q1_a" ><input class="q" name="q1_a[]" type="checkbox" value="<?php echo $low ?>"/>1</label>
                    <label class="choice" for="q1_a" ><input class="q" name="q1_a[]" type="checkbox" value="<?php echo $middle ?>"/>2</label>
                    <label class="choice" for="q1_a" ><input class="q" name="q1_a[]" type="checkbox" value="<?php echo $good ?>"/>3</label>
                    <label class="choice" for="q1_a" ><input class="q" name="q1_a[]" type="checkbox" value="<?php echo $vrgood ?>"/>4</label>
                </div>   
                <input id="q" name="q[]" type="hidden" value="<?php echo $id; ?>" /> 
                <input name="dep[]" type="hidden" value="<?php echo $dep; ?>" />    
            </td>
        </tr>
    </tbody>

Je veux vérifier si la case à cocher pour la ligne actuelle est cochée si oui, alors rendre l'image visible, sinon, la masquer à nouveau:

$('input.q').on('change', function() {
   $(this).parents('.full_qst').find(".q[name='"+$(this).attr("name")+"']").not(this).prop('checked',false);
    if($(this).parents('.full_qst').find(".q[name='"+$(this).attr("name")+"']").length === 0)
    { $(this).parents('.full_qst').find('.check').css('visibility', 'hidden'); }
    else { $(this).parents('.full_qst').find('.check').css('visibility', 'visible'); }
});

Mais cela ne fonctionne pas, comment puis-je résoudre ce problème?

0
Yevgeniy Bagackiy 8 août 2017 à 12:19

2 réponses

Cela fonctionnera pour vous

$('input.q').on('change', function() {
    $(this).parents('.full_qst').find(".q[name='"+$(this).attr("name")+"']").not(this).prop('checked',false);
    if($(".q[name='"+$(this).attr("name")+"']:checked").length === 0){ 
        $(this).parents('.full_qst').find('.check').css('visibility', 'hidden');
    } else {
        $(this).parents('.full_qst').find('.check').css('visibility', 'visible'); 
    }
});
0
Rahul Verma 8 août 2017 à 09:45

C'est ce que tu veux? Vous pouvez rechercher chaque case à cocher sous votre div avec la classe mrk , et vérifier si une est cochée. Ensuite, affichez ou masquez l'image.

$('input.q').on('change', function() {
   
   if($('.mrk').find('input[type="checkbox"]').is(':checked')){
	$('.check').hide(); 
   }
   else
   {
   	$('.check').show(); 
   }
  
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<tbody>
        <tr class="full_qst">
            <td><?php echo $driver; ?></td>
            <td><?php echo $subdriver; ?></td>
            <td><?php echo $skill; ?></td>
            <td> <img alt="" src="http://technofriends.files.wordpress.com/2008/07/google-test-framework.png" class="check">
                <div class="mrk">
                    <label class="choice" for="q1_a" ><input class="q" name="q1_a[]" type="checkbox" value="<?php echo $low ?>"/>1</label>
                    <label class="choice" for="q1_a" ><input class="q" name="q1_a[]" type="checkbox" value="<?php echo $middle ?>"/>2</label>
                    <label class="choice" for="q1_a" ><input class="q" name="q1_a[]" type="checkbox" value="<?php echo $good ?>"/>3</label>
                    <label class="choice" for="q1_a" ><input class="q" name="q1_a[]" type="checkbox" value="<?php echo $vrgood ?>"/>4</label>
                </div>   
                <input id="q" name="q[]" type="hidden" value="<?php echo $id; ?>" /> 
                <input name="dep[]" type="hidden" value="<?php echo $dep; ?>" />    
            </td>
        </tr>
    </tbody>
0
amicoderozer 8 août 2017 à 09:40