在IE8中未检查输入

时间:2013-05-01 06:54:44

标签: javascript internet-explorer input checked

我需要找到一种方法来解决如何使用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
      }
    }
  }
};

这基本上意味着:

  • 只有在输入时才能检查第二列中的输入 检查第一列,第三列中的输入可以是 仅在选中第二列中的输入时检查

  • 无法在同一行中检查所有输入,但只能输入 对于行

  • 如果选中输入any,则取消选中所有其他输入

任何浏览器(Safari,Chrome和IE 10和9)中的所有内容都可以正常运行IE8中的,我无法检查我的第一个输入

显然问题来自脚本,我需要一些如何解决它的技巧。

以前更多的信息而不是prop我使用attr并且它在IE中根本不起作用。

所有的建议,我想也许我可以用ie8

来破解一些js

1 个答案:

答案 0 :(得分:0)

可以替换以下行:

if ($(checkbox).prop("checked")) {

有这个吗?

if ($(checkbox).is(":checked")) {