我显示了一个完整日历,并显示了一个资源列表,其名称旁边显示了复选框。他们的复选框显示正确,如果我不对他们做任何事情,他们会像往常一样保持检查。但是,当我使用jquery调用fullcalendar并添加或删除资源时,复选框在运行jquery / fullcalendar函数后取消选中。
这是我如何创建复选框:
$(document).ready(function() {
for(p in dsnrs){
$('#specialists').append(
'<input type="checkbox" name="designer" id="' + dsnrs[p].name +'" onChange="addOrRem(dsnrs['+p+'] )" />' +dsnrs[p].name+ '<br />');
}
});
这是我添加/删除日历资源的功能
function addOrRem(spec){
//alert("Specialist: " + spec.name + ", Checked: " +document.getElementById(spec.name).checked);
if(document.getElementById(spec.name).checked==true){
remRes(spec.id);
addRes(spec);
}if(document.getElementById(spec.name).checked=false){
remRes(spec.id);
}
}
function addRes(spec) {
$('#calendar').fullCalendar( 'addEventResource', spec );
}
function remRes(id) {
$('#calendar').fullCalendar( 'removeEventResource', id);
}
以下是相关的HTML
<div id='designersbox' style='float:left;margin-top:5px'>
<div id='specialists' onload='specList()'></div>
<a href="#" onClick="addRes()">Add resource</a>
<a href="#" onClick="remRes()">Remove resource</a>
</div>
<div id='calbox' style="width:1000px;height:900px;position:relative;float:left;margin-bottom:10px; padding:10px">
<div id='calendar' style="float:left;height:1000px;width:1000px;"></div>
</div>
我不确定为什么复选框会被重置。如果我注释掉添加/删除功能的调用,只是做警报,它们工作正常。任何帮助或线索都将非常感激。
答案 0 :(得分:0)
添加了var,checked = document.getElementById(spec.name).checked;
似乎解决了这个问题。我不确定它为什么会起作用,但用if == true / false替换if语句而不是使用变量来修复问题。
新功能:
function addOrRem(spec){
//$(":checkbox[value=designer]").attr("checked", true);
//alert("Specialist: " + spec.name + ", Checked: " +document.getElementById(spec.name).checked);
var checked = document.getElementById(spec.name).checked;
if(checked==true){
remRes(spec.id, '#calendard');
addRes(spec, '#calendard') ;
}if(checked==false){
remRes(spec.id, '#calendard');
}
}