简体   繁体   中英

jquery .prop() doesn't work for checkbox

Banging my head on a very simple problem (if you know where to look for it I suppose) I ask for your advice.

I have a table like this built from PHP:

echo '<tr><td class="report"><input type="checkbox" id="crediti['.$i.']" name="crediti['.$i.']" value="'.$cred['id_cre'].'" ';
    if($check == 1){ echo "checked";}else{ echo "";}
    echo' /></td><td class="report">'.$cred['id_cre'].'</td>
    <td class="report">'.number_format($cred['gbv_tot'],'2',',','.').'</td>
    <td class="report"><input class="input_field" type="text" name="chiesto['.$i.']" value="'.$chiesto.'"></td>
    <td class="report"><input type="text" name="ammesso['.$i.']" value="'.$ammesso.'"></td>
    <td class="report"><input type="text" name="data_ammesso['.$i.']" value="'.$data_ammesso.'" class="data_field"></td></tr>';

I have also some jquery code to check each checkbox if the user enters a value in one of the input fields of the row.

$('.input_field').blur(function(){
    if($(this).val()!=''){
        $(this).closest("input").prop("checked", true); 
    }
}); 

I have verified that the selector is identifying the right checkbox but I cannot manage to turn that checkbox to selected. Nothing is thrown as an error. Just nothing happens. What am I doing wrong? Where should I look for the error?

Thanks in advance!

You need to target the checkbox in the same row.

.closest() find an matching ancestor element, so the checkbox is not a ancestor of the checkbox element that is why it is not working.

You need to find the tr parent of the changed field then find the checkbox within it.

$(this).closest("tr").find("input:checkbox").prop("checked", true); 

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM