很抱歉提前冗长,但我有一个持续的问题,尽管之前的帖子提供了很大的帮助,这里列出:
话虽如此,我已经修改了我的代码以检查是否已选中两个框。这是我的代码的链接:
这里的基本代码:
$(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 环境中不起作用。当我尝试调试我的代码时,运行开发者工具似乎会触发它,但没有其他东西真的很清楚。是什么赋予了?我错过了什么?
此外,当在 Firefox 中运行时,jquery 将循环遍历每个警报上的所有复选框,以计算行中复选框的数量(jsfiddle 有 6 个;生产代码有 5 个)。我能够通过返回 false 来停止它,但不确定这是否正确。
关于在哪里修复我的代码的任何想法?有没有基本的 javascript 替代品?我还在学习 jquery/javascript,所以这对我来说都是新的。非常感谢您的帮助;谢谢!