Javascript 如果模糊时输入为空,请取消选中行复选框?

Javascript 如果模糊时输入为空,请取消选中行复选框?,javascript,jquery,checkbox,each,blur,Javascript,Jquery,Checkbox,Each,Blur,我这里有两个问题。单击行上的输入应选中该行的复选框。当前,由于.prev(),只有第一个文本输入才会选中复选框。有没有其他方法可以做到这一点?该行的所有输入都应选中该行的复选框 // check checkbox for clicked row $('table').on('click', 'input[type=text]', function () { $(this).closest('td').prev().find('input')

我这里有两个问题。单击行上的输入应选中该行的复选框。当前,由于.prev(),只有第一个文本输入才会选中复选框。有没有其他方法可以做到这一点?该行的所有输入都应选中该行的复选框

// check checkbox for clicked row
            $('table').on('click', 'input[type=text]', function () {
                $(this).closest('td').prev().find('input').prop('checked', true);
            });
另外,第二块代码也没有正常工作。如果您关注的是另一行,如果上一行(或任何行)的文本输入为空,请删除该复选框。该复选框将被保存,并且没有保存空白文本输入的意义

// remove check in inputs are empty for that row
            $('input[type=text]').blur(function () { 
                $('table tr').each(function () {
                    if ($(this).find('input[type=text]:empty').length()) {
                        $('td').find('input').prop('checked', false);
                    }
                });
            })

找到最接近的tr,然后找到作为复选框的输入并设置checked属性

$(this).closest('tr').find('input[type=checkbox]').prop('checked', true);
对于第二部分:empty选择器针对具有子元素的元素进行测试,而不是针对空值,因此也必须修改。循环遍历每行文本输入,如果其中任何一行不是空的,则设置一个标志。相应地设置复选框

$('table tr').each(function () {
    var emptyRow = true;
    $(this).find("input[type=text]").each(function(){
        if($(this).val().length > 0) {
           emptyRow = false;   
        }
    });        
    if (emptyRow) {
        $(this).find('input[type=checkbox]').prop('checked', false);
    }
});

您可以通过选中最近的
tr
-然后在该tr中找到复选框来完成此操作

$('table').on('click', 'input[type=text]', function () {
    $(this).closest('tr').find('input[type=checkbox]').prop('checked', true);
});
与第二个问题相同-使用最接近的tr进行检查

然后,您可以使用获取所有具有值的文本输入

然后检查长度以查看是否有任何返回的输入,并使用


看看这个。希望这有助于

$('table').on('click', 'input[type=text]', function () {
                $(this).closest('td').parent('tr').find('input[type="checkbox"]').prop('checked', true);
            });
完整代码如下:-

1的解决方案:寻找最接近的“tr”,而不是“td”$(this).closest('tr').find('input').prop('checked',true);
$('table').on('click', 'input[type=text]', function () {
                $(this).closest('td').parent('tr').find('input[type="checkbox"]').prop('checked', true);
            });