2016-05-27 11 views
3

これは私のシナリオです: 私は、別の一部のビューを含むブートストラップDataTableの列にあるラジオボタンを使用している、部分的には、このコードが含まれていますLaravel - ブートストラップDataTableのラジオボタン(yajra)

<input type="radio" name="shipping_address_id" 
     value="{{$shippingAddress->id}}" {!! $shippingAddress->default?'checked="checked"':''!!} /> 

そしてそれは、このようにデータテーブルリモートローディングを使用して追加された:

Datatables::of($addresses) 
        ->addColumn('action', function ($shippingAddress) { 
         return view('admin.shippingaddress.partials.actions_invoice', compact('shippingAddress'))->render(); 
        })->make(true); 

と$ shippingAddress->はデフォルトがfalseの場合、それは次のようにレンダリングされます:

<input type="radio" name="shipping_address_id" value="8"> 

そして、このような、それは本当である:それは含まれていても

<input type="radio" name="shipping_address_id" value="3" checked="checked" /> 

しかし、私はdt.reload(呼び出し)RDBは、それが実際にチェックされていない「にチェック」=チェックします。

addressesDataTable = $('#addressesDataTable').DataTable({ 
       processing: true, 
       serverSide: true, 
       searchDelay: 1000, 
       ajax: { 
        type: 'GET', 
        url: url.replace('idToReplace', $('#buyerSelect').val()), 
        error: function (a, b, c) { 
         console.log(a); 
         console.log(b); 
         console.log(c); 
        }, 
        dataSrc: function (response) { 
         return response.data; 
        } 
       }, 
       columns: [ 
        {data: 'name', name: 'countries.name'}, 
        {data: 'postal', name: 'shipping_addresses.postal'}, 
        {data: 'city', name: 'shipping_address.city'}, 
        {data: 'address', name: 'shipping_address.address'}, 
        {data: 'default', name: 'shipping_address.default'}, 
        {data: 'action', name: 'action', orderable: false, searchable: false} 
       ] 
      }); 

Iが(私はこのようにリロードコールバック関数を使用してみました)テーブルを再ロードする場合でも:私はこのようにデータテーブルを初期化しても

更新

addressesDataTable.ajax.reload(function(){ 
       $('input[name=shipping_address_id]:checked').prop("checked", true); 
      }); 

チェックされたラジオボタンは実際にはチェックされていません。

+0

dt.reload()コールはどこでやっていますか?あなたはクライアント側のjavascriptでそれをやっているように聞こえます。その場合、すでに配信されているHTMLの更新を世話するためにコールバックを渡すべきではありませんか? Laravelは最初のレンダリングを処理しますが、クライアント側のjavascriptで実行する関数の概念はありません。 –

+0

@JohnnyMagrippis詳細を追加する質問を更新しました – SamDroid

+0

あなたはフィドルを提供できますか? –

答えて

0

私はあなたがラジオボタン配列と

   $('input[name=shipping_address_id]').prop("checked", true); 

は、それらのすべてをチェックしている存在が疑われます。同じ名前のラジオボタンが複数ある場合は、それらのすべてがチェックされ、最後にチェックされたラジオボタンはチェックされているものとして表示されます。適切なIDのチェックボックスを検索し、おそらくそれをチェックするためにフィルタリングする必要があるかもしれません。

$("input[name=shipping_address_id]").prop("checked", true); 

あなたもshipping_address_idの名前を入力のすべてをチェックしている、そのためあなたはshipping_address_idの名前を持つすべての入力を参照しています

+0

質問を更新し、 ':checked'を追加して自分のコードを修正しました。 – SamDroid

0

この問題は、この行です。

の入力のみをチェックしたい場合は、その(固有の)ID /クラスを使用してその入力を参照できます。

入力は、次に使用するIDがある場合:

$("input#id-of-your-input").prop("checked", true); 

を入力がクラスを持っている場合、使用:

$("input.class-of-your-input").prop("checked", true); 

注:を別の要素は、同じクラス名などを持っている場合をその要素を入力するとチェックされます。

幸運と最高です。

関連する問題