【发布时间】:2016-09-25 23:29:25
【问题描述】:
这是我的场景: 我在引导数据表的列中使用单选按钮,包括另一个中的部分视图,部分包含以下代码:
<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->default为false的时候是这样渲染的:
<input type="radio" name="shipping_address_id" value="8">
如果它是真的,就像这样:
<input type="radio" name="shipping_address_id" value="3" checked="checked" />
但是当我调用 dt.reload() rdb 时,即使它包含checked="checked" 它也没有真正被检查。
更新
即使我以这种方式初始化数据表:
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}
]
});
即使我重新加载表(我尝试以这种方式使用重新加载回调函数):
addressesDataTable.ajax.reload(function(){
$('input[name=shipping_address_id]:checked').prop("checked", true);
});
选中的单选按钮并未真正选中。
【问题讨论】:
-
dt.reload()电话在哪里以及如何进行?听起来你是在客户端javascript中做的。如果是这种情况,您不应该传递一个回调来处理更新已经提供的 html 吗? Laravel 负责初始渲染,它不知道您在客户端 javascript 中运行的函数。 -
@JohnnyMagrippis 我更新了添加细节的问题
-
你能提供一个小提琴吗?
-
“没有真正检查”是什么意思?属性已设置但未出现选中标记?或者你看到它被选中了但 JS 返回 false?
标签: javascript jquery laravel datatables