2012-05-04 10 views
1
<?php echo CHtml::checkBox('markComplete', FALSE , 
        array(
        'class' => 'markComplete', 
        'id'=> 'markComplete'.$events['id'],       
        'ajax' => array(
            'url'=>$this->createUrl('/events/events/MarkComplete'), 
            'data'=>'event_status_on='.$events['id'], 
            'type'=>'POST', 
            'beforeSend' => 'js:function(){ 

             var idSelector = $("#markComplete'.$events['id'].'"); 
             var check = idSelector.is(":checked"); 
             var child = idSelector.parent("td"); 
             var parent = $(child).parent("TR"); 
             $(parent).css("opacity","0.5"); 


            }', 
            'success'=>'js:function(resp) {                   
             $("#right").prepend(resp); 

             return true;           
            }' 
            ), 
           ) 

          ); 

    ?> 

CHTMLのCheckBoxが...チェックボックスをクリックしますが、まだ未チェックが変化していないとしてマークされたAJAXを通じて提出..未確認が変化していないとしてマークされました。 ..それを送信するAJAX ...完全に応答を得る。CHTMLのCheckBoxチェックボックスをクリックしますが、それでも私は、それがFALSEに変更されませTRUEに変更した場合

+0

あなたの問題を言い換えてみてください。それは私にはあまり意味がありません。私はあなたが真実に変わっているか、あなたが期待している/想像していることを何に変えているのかは分かりません。 – Paystey

答えて

1

コードにエラーはありませんが、最終的にcheckBoxに対して生成されるonclickハンドラは、デフォルトでfalseを返します。あなたの生成されたHTMLをチェックし、あなたがこれを参照してくださいよ:

最後に return false;は、任意のHTML要素のデフォルト onclickイベント動作を妨げること
jQuery('body').undelegate('#markComplete_someId','click').delegate('#markComplete_someId','click',function(){jQuery.ajax({'url':'/something','data':'event_status_on=someId','type':'POST','beforeSend':function(){ 
    var idSelector = $("#markComplete"); 
    var check = idSelector.is(":checked"); 
    var child = idSelector.parent("td"); 
    var parent = $(child).parent("TR"); 
    $(parent).css("opacity","0.5"); 
}, 
'success':function(resp) { 
     $("#right").prepend(resp); 
     return true; 
},'cache':false}); 
return false; // this line changes everything!! 
}); 

。これはdocumentation for the clientChange methodに記載されています。 htmlOptionsの特定の属性(例:'ajax')を指定することができます。'return'は、onclickハンドラが返すものを指定します。これはデフォルトではfalseで、これを返すように変更することができますそれを動作させるだろう

<?php echo CHtml::checkBox('markComplete', FALSE , 
       array(
        'class' => 'markComplete', 
        'id'=> 'markComplete'.$events['id'],       
        'ajax' => array(/* add your code */), 
        'return' => true // add return like this 
       ) 
    ); 
?> 

:このような'return'プロパティを追加することにより、真。

+1

パーフェクト........ –

関連する問題