如果输入为空,则取消选中行复选框
Uncheck row checkbox if inputs are empty on blur?
我这里有两个问题。单击行上的输入将选中该行的复选框。目前,由于.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);
}
});
})
http://jsfiddle.net/Ldge5qzn/找到最近的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);
}
});
JSFiddle演示
你可以通过检查最近的tr
-然后在tr
$('table').on('click', 'input[type=text]', function () {
$(this).closest('tr').find('input[type=checkbox]').prop('checked', true);
});
与第二个问题相同-使用最接近的tr
检查然后你可以使用过滤器来获取所有值为
的文本输入然后检查长度以查看是否有任何返回的输入-并使用.prop('checked',function()
设置相应的checked属性$('input[type=text]').blur(function () {
var $tr = $(this).closest('tr'); // get closest tr
// get all of input[type=text] with value in that row
var inputsWithValue = $tr.find('input[type=text]').filter(function () {
return $.trim(this.value).length;
});
// set the checked to true if any element has value - else set checked to false
$tr.find('input[type=checkbox]').prop('checked', function () {
return inputsWithValue.length;
}).length;
});
小提琴
看看这个,希望对你有帮助。
$('table').on('click', 'input[type=text]', function () {
$(this).closest('td').parent('tr').find('input[type="checkbox"]').prop('checked', true);
});
完整代码如下:-
JSFiddle
相关文章:
- 如何在angularJS中编辑时,如果DB中的值为true,则设置复选框,如果值为false,则取消选中复选框
- 使用Jquery选择或取消选择ListView中的所有复选框
- 使用jquery选中/取消选中单个复选框
- 使用javascript在页面加载时取消选中所有复选框
- (取消)使用单独的复选框激活复选框列表
- jQuery-取消选中复选框
- 单击或取消选中复选框时,如何创建弹出的自定义窗口
- Javascript选中/取消选中所有复选框并将值写入文本区域
- dojo/cbtree取消选中所有复选框并选中选中复选框
- 通过选中和取消选中复选框来添加和删除数组中的值
- 当与之关联的 ng-model 为 false 时,Angularjs 复选框值不会取消选中
- 如何通过jQuery选中所有复选框并在单击一个复选框时取消选择
- 使用Javascript根据组中的值选中或取消选中复选框
- 选中和取消选中 JavaScript 中的复选框
- 可以't取消选中该复选框(取消选中复选框时隐藏内容)
- 在复选框取消选中事件中从HTML下拉列表中删除项目
- 如何使用复选框取消选中来清除单选按钮
- 复选框取消单击事件Javascript
- 选中复选框(取消)时显示另一个文本
- Javascript复选框取消选中其他复选框,反之亦然