IE8でこの問題を解決する方法を見つける必要があります
列と行を含むテーブルがあります
<table>
<thead>
<tr class="body">
<th class="checkbox"><input class="forecast first" name="1" type="checkbox"></th>
<th class="checkbox"><input class="forecast second" name="2" type="checkbox"></th>
<th class="checkbox"><input class="forecast third" name="3" type="checkbox"></th>
<th class="checkbox"><input class="forecast any" name="any" type="checkbox"></th>
</tr>
</thead>
<tbody>
<tr class="body">
<td class="checkbox"><input class="forecast first" name="1" type="checkbox"></td>
<td class="checkbox"><input class="forecast second" name="2" type="checkbox"></td>
<td class="checkbox"><input class="forecast third" name="3" type="checkbox"></td>
<td class="checkbox"><input class="forecast any" name="any" type="checkbox"></td>
</tr>
<tr class="body">
<td class="checkbox"><input class="forecast first" name="1" type="checkbox"></td>
<td class="checkbox"><input class="forecast second" name="2" type="checkbox"></td>
<td class="checkbox"><input class="forecast third" name="3" type="checkbox"></td>
<td class="checkbox"><input class="forecast any" name="any" type="checkbox"></td>
</tr>
</tbody>
</table>
私の列の中には、次の組み合わせで機能する入力チェックボックスがあります。
oncheck: function(checkbox) {
if ($(checkbox).prop("checked")) { // checking
if ($(checkbox).hasClass('first')) {
$('.forecast[value="' + checkbox.value +'"]').prop("checked", false); // unmarking checkboxes in this row
$('.forecast.first').prop("checked", false); // unmarking checkboxes in this column
$('.forecast.any').prop("checked", false); // unmarking checkboxes in Any order column
$(checkbox).prop("checked", true);
}
if ($(checkbox).hasClass('second')) {
if ($('.forecast.first[value!="' + checkbox.value + '"]:checked').length > 0 ) {
$('.forecast.second').prop("checked", false); // unmarking checkboxes in this column
$('.forecast.third[value="' + checkbox.value +'"]').prop("checked", false); // unmarking 3rd checkboxes in this row
$(checkbox).prop("checked", true);
} else {
$(checkbox).prop("checked", false);
}
}
if ($(checkbox).hasClass('third')) {
if ($('.forecast.first[value!="' + checkbox.value + '"]:checked').length > 0 &&
$('.forecast.second[value!="' + checkbox.value + '"]:checked').length > 0) {
$('.forecast.third').prop("checked", false); // unmarking checkboxes in this column
$(checkbox).prop("checked", true);
} else {
$(checkbox).prop("checked", false);
}
}
if ($(checkbox).hasClass('any')) {
// unmarking checkboxes in columns : 1st 2nd 3rd
$('.forecast.first').prop("checked", false);
$('.forecast.second').prop("checked", false);
$('.forecast.third').prop("checked", false);
$(checkbox).prop("checked", true);
}
}
else {
if ($(checkbox).hasClass('first')) {
$('.forecast').prop("checked", false); // unchecking all
}
if ($(checkbox).hasClass('second')) {
$('.forecast.third').prop("checked", false); // unchecking all third class
}
}
}
};
これは基本的に次のことを意味します。
2 列目の入力は 1 列目の入力がチェックされている場合にのみチェックでき、3 列目の入力は 2 列目の入力がチェックされている場合にのみチェックできます。
すべての入力を同じ行でチェックすることはできませんが、行の入力のみを確認できます
入力 any がチェックされている場合、他のすべての入力はチェック解除されます
最初の入力を確認できないIE8の一部であるすべてのブラウザ(Safari、Chrome、IE 10および9)ですべてがうまく機能します。
明らかに、問題はスクリプトに起因しています。それを回避する方法についていくつかのヒントが必要です。
prop
私が使用するのではなく、以前は詳細情報attr
が必要で、IEではまったく機能していませんでした。
すべての推奨事項、私はおそらく ie8 のためだけにいくつかの js をハックできると思いました