Jquery .prop()对复选框不起作用


jquery .prop() doesn't work for checkbox

我碰到一个非常简单的问题(如果你知道在哪里找的话,我想),我请求你的建议。

我有一个这样的表从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>';

我也有一些jquery代码来检查每个复选框,如果用户在一行的一个输入字段中输入值。

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

我已经验证了选择器正在识别正确的复选框,但我无法将该复选框转为选中。不会抛出任何错误。什么都没发生。我做错了什么?我应该在哪里查找错误?

提前感谢!

您需要在同一行中定位复选框。

.close()找到一个匹配的祖先元素,所以复选框不是复选框元素的祖先,这就是为什么它不起作用。

您需要找到更改字段的tr父字段,然后找到其中的复选框。

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