0

フルカレンダーが表示され、名前の横にチェックボックスが表示されたリソースのリストが表示されます。チェックボックスは正しく表示され、何もしない場合は通常どおりにチェックされたままになります。しかし、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>

チェックボックスがリセットされる理由がよくわかりません。追加/削除関数の呼び出しをコメントアウトしてアラートを実行すると、正常に機能します。どんな助けや手がかりも大歓迎です。

4

1 に答える 1

0

varを追加しました。checked=document.getElementById(spec.name).checked;

問題を解決したようです。なぜ機能するのかわかりませんが、変数を使用しない代わりにifステートメントをchecked == true / falseに置き換えると、問題が修正されました。

新機能:

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');
    }
}
于 2012-04-20T19:00:44.910 に答える