1

私は頭痛の状況に遭遇しました。選択オプション (2012 年 5 月 30 日 EQ) をチェックしたところ、選択ボタンをクリックしてアクションを送信できませんでしたが、クリックできるはずです。問題は Chrome と IE で発生しますが、FF では問題ありません。Jqueryの非互換性の問題だと思います。次のようにコードの一部を添付しました。

  function $recalcSelection($checkbox) {
    $selectActionList.find("option").each(function() {
      $optionLength = $table.find("td.actioncolumn input:checked").length;
      if($optionLength <= 0) {
        $(this).attr("disabled", true);
      } else if($optionLength == 1) {
        $(this).attr("disabled", false);
      } else {
        if(
          $(this).val() == "editAppointment" ||
          $(this).val() == "copyAppointment" ||
          $(this).val() == "viewShowList" ||
          $(this).val() == "viewScheduledTimes")
        {
          $(this).attr("disabled", true);
        } else {
          $(this).attr("disabled", false);
        }
      }
    });

    if($selectActionList.find("option:selected").attr('disabled')) {
      $selectActionList.find("option:enabled").eq(0).attr("selected", true);
    }

    if($selectActionList.find("option:enabled").length <= 0) {
      $selectActionButton.attr("disabled", true);
    } else {
      $selectActionButton.attr("disabled", false);
    }
  }

$selectActionButton は送信ボタンで、$selectactionlist は選択リストです。Chrome で ($selectActionList.find("option:enabled").length を印刷しようとしましたが、0 です。しかし、FF で印刷していたときは 7 です。誰かが理由を理解するのを手伝ってくれますか?感謝します。

ここに画像の説明を入力

次のように HTML テーブルの一部を添付しました。

<table id="appointmentTable">
  <thead>
    <tr class="headerrow">
      <th class="actioncolumn"></th>
      <th class="datecolumn">Date</th>
      <th class="earliesttimecolumn">Start Time</th>

      <th class="clientnamecolumn">Client</th>
      <th class="locationcolumn">Location</th>
      <th class="roomcolumn">Rooms</th>
      <th class="typecolumn">Type</th>
      <th class="filledtimescolumn">Filled Times</th>
    </tr>

  </thead>

  <tbody> 

      <tr class=" hiddenrow" appointmentid="15166">
        <td class="actioncolumn"><input type="checkbox" name="appointmentids[]" value="15166" /></td>
        <td class="datecolumn"><span title="1338094800"></span><a href="?action=viewDailyUsers&date=05/27/2012&clients[]=8" title="View Appointments on 05/27/2012">05/27/2012</a></td>
        <td class="earliesttimecolumn"></td>
        <td class="clientnamecolumn">CPH</td>
        <td class="locationcolumn">New Location</td>
        <td class="roomcolumn"></td>

        <td class="typecolumn">Screening</td>
        <td class="filledtimescolumn">0/0</td>
      </tr>
   </tbody>

  <tfoot>
    <tr class="actionrow">
      <td colspan="2" class="actioncolumn"></td>
      <td colspan="6">With Selected:</td>
    </tr>
    <tr class="actionrow">
                  <td colspan="2" class="actioncolumn">

        <input type="submit" name="button" value="Create New" />
      </td>
                  <td colspan="6">
        <select id="selectactionlist" name="selectaction">
                          <optgroup label="Adjustments">
            <option value="editAppointment">Edit</option>
            <option value="copyAppointment">Copy</option>
            <option value="deleteAppointment">Delete</option>

          </optgroup>
                          <optgroup label="Lists">
                              <option value="viewShowList">Show/No Show List</option>
                              <option value="viewScheduledTimes">Schedule List</option>
          </optgroup>
                          <optgroup label="Hidden">
            <option value="hideAppointment">Hide</option>

            <option value="showAppointment">Show</option>
          </optgroup>
                        </select>
        <input id="selectactionbutton" type="submit" name="button" value="Select" />
      </td>
    </tr>
  </tfoot>         
4

1 に答える 1

1

以下を実行する代わりに:

    if (foo) {
      $(this).attr("disabled", true);
    } else {
      $(this).attr("disabled", false);
    }

disabled 属性が存在するだけで無効になる場合があるため、disabled 属性を追加および削除する必要があります (おそらく chrome が無効にしておく理由)。代わりにこれを試してください:

if (foo) {
    $(this).attr("disabled", true);
} else {
    $(this).removeAttr("disabled");
}

編集:この正確なコードを試してください

function $recalcSelection($checkbox) {
    $selectActionList.find("option").each(function() {
        $optionLength = $table.find("td.actioncolumn input:checked").length;
        if($optionLength <= 0) {
            $(this).attr("disabled", true);
        } else if($optionLength == 1) {
            $(this).removeAttr("disabled");
        } else {
            if($(this).val() == "editAppointment" ||
                $(this).val() == "copyAppointment" ||
                $(this).val() == "viewShowList" ||
                $(this).val() == "viewScheduledTimes")
            {
                $(this).attr("disabled", true);
            } else {
                $(this).removeAttr("disabled");
            }
        }
    });

    if($selectActionList.find("option:selected").attr('disabled') != "true") {
        $selectActionList.find("option").filter(function () { return $(this).attr("disabled") != null}).eq(0).attr("selected", true);
    }

    if($selectActionList.find("option").filter(function () { return $(this).attr("disabled") != null}).length <= 0) {
        $selectActionButton.attr("disabled", true);
    } else {
        $selectActionButton.removeAttr("disabled");
    }
}​
于 2012-05-25T19:00:45.623 に答える