0

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 をハックできると思いました

4

1 に答える 1