无法通过javascript检查复选框

问题描述:

我在页面上有一个表单,带有复选框输入字段。我在页面上也有一个表格,其中有一个具有真/假值的列。表中的每一行还有一个复选框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

你试过if (table.cell(idx, 3).data() == true)

由于您将一个布尔值与“true”作为一个字符串进行比较,您总是会得到错误的条件。

+1

Oooooh,对。数据类型。 “我总是搞砸一些世俗的细节!”再次感谢! – QuestionMarks