jquery .prop()不适用于复选框

时间:2014-05-27 11:46:45

标签: javascript php jquery 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); 
    }
}); 

我已经确认选择器正在识别正确的复选框,但我无法将该复选框设置为已选中。没有任何东西被抛出作为错误。什么都没发生。我究竟做错了什么?我应该在哪里寻找错误?

提前致谢!

1 个答案:

答案 0 :(得分:2)

您需要将同一行中的复选框作为目标。

.closest()找到匹配的祖先元素,因此复选框不是复选框元素的祖先,这就是它无效的原因。

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

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