我有一个数据表,其中包含数据库中的foreach数据,并且想向每行添加按钮,这将打开Jquery ui模态,用户可以在其中 编辑行中的数据。
如何在对话框中为每一行显示此foreach数据?
我的桌子
<tbody>
@if($invoices)
@foreach($invoices as $invoice)
<tr>
<td>{{$invoice->invoice_number}}</td>
<td>{{$invoice->status}}</td>
<td>{{$invoice->created_at}}</td>
<td>{{$invoice->supplier_name}}</td>
<td>{{$invoice->delivery_date}}</td>
<td>{{$invoice->comment}}</td>
<td><a class="opener"><i class="fa fa-fw fa-edit"></i></a></td>
</tr>
@endforeach
@endif
</tbody>
HTML模态窗口,该数据应在哪里:
<div id="dialog" class="dialog">
<input id="name">
</div>
jQuery ui对话框脚本:
$( ".opener" ).click(function() {
$( "#dialog" ).dialog( "open" );
});
答案 0 :(得分:0)
我猜您在寻找什么(将其放在HTML所在的位置)
-检查数据数组$invoices
是否为空
-如果不为空,则会在<table>
的每一行中添加<tr>
,其中元素<td>
位于其中,并带有$invoice
信息。
<?php
if(!empty($invoices)) {
echo("<table>");
foreach($invoices as $invoice) {
echo("<tr>".
"<td>".$invoice->invoice_number."</td>".
"<td>".$invoice->status."</td>".
"<td>".$invoice->created_at."</td>".
"<td>".$invoice->supplier_name."</td>".
"<td>".$invoice->delivery_date."</td>".
"<td>".$invoice->comment."</td>".
"<td><a class='opener'><i class='fa fa-fw fa-edit'>open dialog</i></a></td>".
"</tr>");
}
echo("</tr></table>");
}
?>
您的模态窗口和jQuery看起来都很好。
答案 1 :(得分:0)
要显示当前行的数据,您将需要两件事:
1)从行中获取值。
2)将这些值放在对话框中。
首先将一些类设置为要在对话框中显示的td,可以说它们是前3个。 还要设置一个属性,该属性将在输入中存储您想要的名称
<tr>
<td class="data" data-name="inv_number">{{$invoice->invoice_number}}</td>
<td class="data" data-name="inv_status" >{{$invoice->status}}</td>
<td class="data" data-name="created_at">{{$invoice->created_at}}</td>
<td>{{$invoice->supplier_name}}</td>
<td>{{$invoice->delivery_date}}</td>
<td>{{$invoice->comment}}</td>
<td><a class="opener"><i class="fa fa-fw fa-edit"></i></a></td>
</tr>
然后单击,找到该行并存储值:
$( ".opener" ).click(function() {
var values = {};
$(this).closest('tr') //find the current row
.find('.data') // find the td's
.each(function(index, td) { // for each get and store the value
var inputName = $(td).data('name'); //get the name
var inputValue = $(td).text(); // get the text which the td holds
values[inputName] = inputValue; // set the values
});
$( "#dialog" ).html(''); // clear the previously created inputs
$( "#dialog" ).dialog( "open" );
现在根据存储的值创建输入:
$.each(values, function(name, value) {
$( "#dialog" ).append('<input name="'+name+'" value="'+value+'" />');
});
});