2017-08-29 2 views
1

に動作しない、ジャバスクリプトが動作することはできません内部の要求なし...Javascriptを、コントローラの配列私は、コントローラ内部の変化にアクションフォームでスイッチボタンを作りたい

この私のコントローラは、コントローラのAJAXサーバー側のDataTableにjqueryのを含めます...

public function ajax_list() 
    { 
     $list = $this->model_masterdata_menu->get_datatables(); 
     $data = array(); 
     $no = $_POST['start']; 
     foreach ($list as $i => $menu) { 
      $no++; 
      $row = array(); 
      $row[] = $menu->menu_id; 
      $row[] = $menu->menu_nama; 
      $row[] = $menu->menu_url; 
      if($menu->statusmenu_nama == 'visible') 
      { 
       $row[] = '<form id="form_['.$i.']" method="post" action="'.site_url().'/menu/visible/'.$menu->menu_id.'"> 
          <label class="switch"> 
          <input type="hidden" value="0" name="cbcheck"> 
          <input type="checkbox" name="visible['.$i.']" id="cb_['.$i.']" class="cb_['.$i.']" checked> 
          <span class="slider round"></span> 
          </label> 
         </form"> 
         <script language=\"text/javascript\"> 
         $(function(){ 
         $("#cb_['.$i.']").on("change",function(){ 
          $("#form_['.$i.']").submit(); 
          }); 
         }); 

         </script> 
         '; 
      }else{ 
       $row[] = '<form id="form2_['.$i.']" method="post" action="'.site_url().'/menu/unvisible/'.$menu->menu_id.'"> 
          <label class="switch"> 
          <input type="hidden" value="1" name="cbcheck"> 
          <input type="checkbox" name="visible['.$i.']" id="cb2_['.$i.']" class="cb2_['.$i.']" value="1" > 
          <span class="slider round"></span> 
          </label> 
         </form> 

         <script language=\"text/javascript\"> 
         $(function(){ 
         $("#cb2_['.$i.']").on("change",function(){ 
          $("#form2_['.$i.']").submit(); 
          }); 
         }); 
         </script> 
         '; 
      } 

      $row[] = '<a class="btn btn-sm btn-primary" href="javascript:void(0)" title="Edit" onclick="edit('."'".$menu->menu_id."'".')"><i class="glyphicon glyphicon-pencil"></i> Edit</a> 
        <a class="btn btn-sm btn-danger" href="javascript:void(0)" title="Hapus" onclick="hapus('."'".$menu->menu_id."'".')"><i class="glyphicon glyphicon-trash"></i> Delete</a>'; 

      $data[] = $row; 
     } 

     $output = array(
         "draw" => $_POST['draw'], 
         "recordsTotal" => $this->model_masterdata_menu->count_all(), 
         "recordsFiltered" => $this->model_masterdata_menu->count_filtered(), 
         "data" => $data, 
       ); 
     //output to json format 
     echo json_encode($output); 

when I switch, no request

私はボタン、要求なしを切り替えるajax_list.php

。 誰でも助けてくれますか?どうもありがとうございまし

+1

なぜコントローラ内のjavascriptのブロックはどうですか?あなたはちょうどそれを取り除くことはできません、ちょうどjsを含めるだけで、フォームのhtml – Ghost

+0

@Ghostのためのビューファイルを使用して、私はデータと繰り返し配列を取得するためにコントローラでjavascriptを作成します。溶液? –

答えて

2

からjavascriptコードを削除そのようなAjaxを通して。

あなたは、同じクラスのイベントを追加したいすべての要素を与える必要があります。

$(function() { 
    // Registering an event this way, the event will also be added to all elements 
    // appended to the DOM at a later point, like through ajax. 
    $('body').on('change', '.some-class', function() { 
     // Submit the closest form 
     $(this).closest('form').submit(); 
    }); 
}); 
:次に、あなたがそうのように、代わりにメインページにそのクラスにバインドイベントを追加する必要があります

<input type="checkbox" name="visible['.$i.']" id="cb_['.$i.']" class="some-class" checked> 

+0

ありがとう、ありがとう –

1

あなたがこの方法のように試してみてください:

  1. 変更あなたのセレクタclassからidとあなたはJSを読み込むことができませんcontroller

    $(function(){        
        $("body").delegate(".cb2","change",function(){ 
         $(this).closest('form').submit 
         //$("#form2_['.$i.']").submit(); 
        }); 
    }); 
    
+0

完璧に、 –

関連する問題