2016-01-13 181 views
0

我在頁面上有一個表單,帶有複選框輸入字段。我在頁面上也有一個表格,其中有一個具有真/假值的列。表中的每一行還有一個複選框id="selectedReviewTypeYear"。還有一個按鈕id="getDataToEdit"無法通過javascript檢查複選框

當點擊getDataToEdit按鈕時,javascript檢查是否有任何id="selectedReviewTypeYear"框被選中。如果選中某個框,則會打開一個div,並根據所選行預填充表單字段。如果沒有框被選中,div仍然隱藏。

我的問題是當表格數據爲「true」時,複選框沒有得到檢查。這裏是JavaScript:

$('#getDataToEdit').on('click', function(){ 
    $('#reviewTypeTable').find('tr').each(function(){ 
     var row = $(this); 
     if (row.find('input[id="selectedReviewTypeYearID"]').is(':checked')){ 
      var idx = table.row(this).index(); 
      var vReviewName = document.getElementById("editReviewTypeYear-name"); 
      var vAllowMultiple = document.getElementById("allowMultiple"); 
      var vAllowMultipleSpan = document.getElementById("allowMultipleSpan"); 
      vReviewName.innerHTML = table.cell(idx, 2).data(); 
      if (table.cell(idx, 3).data() == "true"){ 
       $("#allowMultiple").prop("checked", true); 
       vAllowMultipleSpan.innerHTML = table.cell(idx, 3).data(); 
      } 
      else { 
       $("#allowMultiple").prop("checked", false); 
       vAllowMultipleSpan.innerHTML = table.cell(idx, 3).data(); 
      } 
      showHide.style.visibility = 'visible'; 
     } 
    }) 
}); 

出於測試目的,我添加了一個span元素稱爲allowMultipleSpan形式。這只是讓我可以看到,如果JavaScript能夠讀取表字段中的數據,它就是這樣。當我選擇一行時,然後單擊按鈕,div正確填充vReviewName.innerHTML以及allowMultipleSpan填充正確。但是,如果數據爲「true」,則複選框不會被檢查。

我正在運行JQuery 2.1.1。

從jQuery(1.6+)規格:到目前爲止,我已經使用腳本中的變化,都具有相同的結果試圖

$("#allowMultiple").prop("checked", true);

從jQuery(1.5)符合規範:

$("#allowMultiple").attr("checked", true);

從JavaScript規格:

document.getElementById("allowMultiple").checked = true;

這裏是我的形式HTML:

<div class="widget-header"><h3>Edit: <span id="editReviewTypeYear-name" style="color: blue"></span></h3></div> 
       <div class="widget-content"> 
        <form id="editReviewTypeYear-form" class="form-horizontal" url="submitReviewTypeYear.htm"> 
         <div class="form-group"> 
          <label class="col-sm-2 control-label">Allow Multiple: </label> 
          <div class="col-sm-10"> 
           <input type="checkbox" id="allowMultiple" name="allowMultiple" /> 
           <span id="allowMultipleSpan" style="color: blue"></span> 
          </div> 
         </div> 
         <div class="form-actions"> 
          <button id="submitReviewTypeYear" type="submit">Save</button> 
          <button class="btn btn-small btn-warning reg-cancel" id="submitReviewTypeYear-cancel" type="button" name="Cancel" value="cancel">Cancel</button> 
         </div> 
        </form> 
       </div> 
+1

你試過了嗎if(table.cell(idx,3).data()== true)'? –

+0

「getDataToEdit」和「reviewTypeTable」的HTML在哪裏?請發佈完整的代碼示例。另外,你會得到什麼錯誤控制檯? – j08691

+0

@LucasRodrigues - aaaaand就是這樣。任何想法如果測試會改變結果?就像我說的那樣,跨度仍然在填充正確的值,所以從所有跡象看,好像測試正確地開始了。 – QuestionMarks

回答

1

你試過if (table.cell(idx, 3).data() == true)

由於您將一個布爾值與「true」作爲一個字符串進行比較,您總是會得到錯誤的條件。

+1

Oooooh,對。數據類型。 「我總是搞砸一些世俗的細節!」再次感謝! – QuestionMarks

相關問題