很抱歉提前啰嗦,但我有一个持续的问题,尽管上一篇文章提供了很大帮助,但在此处列出:
话虽如此,我修改了我的代码以检查是否已检查了两个盒子。这是我的代码的链接:
基本代码:
$(function () {
$('tr').on('change', '.AIR', function () {
console.log(this.checked)
if (!$(this).closest('td').siblings('td').find('.HEAD').prop('checked')) {
alert("HEAD has to be checked if AIR is to be checked.\nPlease go back and check HEAD.");
$(this).prop('checked', !this.checked);
return false;
}
});
$('tr').on('change', '.HEAD', function () {
console.log(this.checked)
if ($(this).closest('td').siblings('td').find('.AIR').is(':checked')) {
alert("HEAD has to be checked if AIR is to be checked.\nPlease leave HEAD checked.");
$(this).prop('checked', !this.checked);
return false;
}
});
});
<table>
<tr class="row">
<td>Store 1</td>
<td>
<input type="checkbox" value="" name="" />Foo</td>
<td>
<input type="checkbox" value="" name="" class="HEAD" />HEAD</td>
<td>
<input type="checkbox" value="" name="" />Do</td>
<td>
<input type="checkbox" value="" name="" class="AIR" />AIR</td>
<td>
<input type="checkbox" value="" name="" />Me</td>
</tr>
<tr class="row">
<td>Store 2</td>
<td>
<input type="checkbox" value="" name="" />Foo</td>
<td>
<input type="checkbox" value="" name="" class="HEAD" />HEAD</td>
<td>
<input type="checkbox" value="" name="" />Do</td>
<td>
<input type="checkbox" value="" name="" class="AIR" />AIR</td>
<td>
<input type="checkbox" value="" name="" />Me</td>
</tr>
</table>
如果用户检查了AIR,则会弹出一个警告并告诉用户确保已选中HEAD。如果用户正确检查了AIR和HEAD,然后用户尝试取消选中HEAD,则会让用户知道是否已选中HEAD。
这适用于Chrome,Firefox(早在16年)和IE10。由于某种原因,它在IE8或IE9或IE10兼容性中不起作用。似乎根本没有发生jquery检查。我甚至将上面提到的jsfiddle链接带到了跨浏览器模拟器中,并且代码在IE8 / 9环境中不起作用。当我尝试调试代码时,运行Developer工具似乎会触发它,但其他任何事情都不清楚。是什么赋予了?我错过了什么?
此外,当在Firefox中运行时,jquery将遍历每个警报的所有复选框,以计算行中复选框的数量(jsfiddle有6;生产代码有5)。我能够以错误的方式停止,但不确定这是否正确。
有关修改代码的位置的任何想法?有没有任何基本的JavaScript替代品?我还在学习jquery / javascript,所以这对我来说都是新手。非常感谢帮助;谢谢!