无法通过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>
你试过if (table.cell(idx, 3).data() == true)
?
由于您将一个布尔值与“true”作为一个字符串进行比较,您总是会得到错误的条件。
Oooooh,对。数据类型。 “我总是搞砸一些世俗的细节!”再次感谢! – QuestionMarks
你试过了吗if(table.cell(idx,3).data()== true)'? –
“getDataToEdit”和“reviewTypeTable”的HTML在哪里?请发布完整的代码示例。另外,你会得到什么错误控制台? – j08691
@LucasRodrigues - aaaaand就是这样。任何想法如果测试会改变结果?就像我说的那样,跨度仍然在填充正确的值,所以从所有迹象看,好像测试正确地开始了。 – QuestionMarks