如何从@foreach blade in Laravel 8 传递数据以编辑模态
How to pass data to edit modal from @foreach blade in Laravel 8
我想在同一页面中有一个编辑模式。我有一个记录列表。
这是来自 partners.blade.php 视图的代码片段。
@foreach($partners as $partner)
<td>
<a href="#" onclick="edit_partner()"
data-target="#edit_partner"
data-toggle="modal"
data-id="{{$partner->id}}"
data-full_name="{{$partner->full_name}}"
data-code="{{$partner->code}}" ...
>{{$partner->full_name}}</a>
</td>
和我想编辑合作伙伴的模式:
<div id="edit_partner" class="modal fade">... </div>
这里是jquery代码:
function edit_partner() {
$('#edit_partner').on('show', function(e) {
var link = e.target(),
modal = $(this),
full_name = link.data('full_name'),
code = link.data('code'), ...
modal.find('#full_name').val(full_name);
modal.find('#code').val(code); ...
});
}
我想要这个:
当我点击合作伙伴的全名时,它应该打开一个包含合作伙伴信息的模式,我可以编辑这些信息。
这是我试过的:
1.我用过这个代码,但是它总是return最后一个伙伴
2。我试过这个:
<div id="edit_partner_{{$partner->id}}" class="modal fade">... </div>
和
data-target="#edit_partner_{{$partner->id}}"
但这一次,当我点击全名时,它没有打开模式。当我单击最后一个合作伙伴时,它会打开包含合作伙伴信息的模式。
您可以在 edit_partner
函数中传递 this
,然后使用它来获取数据属性值并将其传递给您的模态输入。
演示代码 :
function edit_partner(el) {
var link = $(el) //refer `a` tag which is clicked
var modal = $("#edit_partner") //your modal
var full_name = link.data('full_name')
var code = link.data('code')
modal.find('#full_name').val(full_name);
modal.find('#code').val(code);
}
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/css/bootstrap.min.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/js/bootstrap.min.js"></script>
<table>
<tr>
<td>
<!-- pass this inside function-->
<a href="#" onclick="edit_partner(this)" data-target="#edit_partner" data-toggle="modal" data-id="{{$partner->id}}" data-full_name="abc" data-code="1">abc</a>
</td>
</tr>
<tr>
<td>
<a href="#" onclick="edit_partner(this)" data-target="#edit_partner" data-toggle="modal" data-id="{{$partner->id}}" data-full_name="abc2" data-code="2">abc2</a>
</td>
</tr>
</table>
<div class="modal fade" id="edit_partner" role="dialog">
<div class="modal-dialog">
<!-- Modal content-->
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal">×</button>
<h4 class="modal-title">Modal Header</h4>
</div>
<div class="modal-body">
<p>Some text in the modal.</p>
<input type="text" id="full_name">
<input type="text" id="code">
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
</div>
</div>
</div>
</div>
我想在同一页面中有一个编辑模式。我有一个记录列表。
这是来自 partners.blade.php 视图的代码片段。
@foreach($partners as $partner)
<td>
<a href="#" onclick="edit_partner()"
data-target="#edit_partner"
data-toggle="modal"
data-id="{{$partner->id}}"
data-full_name="{{$partner->full_name}}"
data-code="{{$partner->code}}" ...
>{{$partner->full_name}}</a>
</td>
和我想编辑合作伙伴的模式:
<div id="edit_partner" class="modal fade">... </div>
这里是jquery代码:
function edit_partner() {
$('#edit_partner').on('show', function(e) {
var link = e.target(),
modal = $(this),
full_name = link.data('full_name'),
code = link.data('code'), ...
modal.find('#full_name').val(full_name);
modal.find('#code').val(code); ...
});
}
我想要这个: 当我点击合作伙伴的全名时,它应该打开一个包含合作伙伴信息的模式,我可以编辑这些信息。
这是我试过的:
1.我用过这个代码,但是它总是return最后一个伙伴
2。我试过这个:
<div id="edit_partner_{{$partner->id}}" class="modal fade">... </div>
和
data-target="#edit_partner_{{$partner->id}}"
但这一次,当我点击全名时,它没有打开模式。当我单击最后一个合作伙伴时,它会打开包含合作伙伴信息的模式。
您可以在 edit_partner
函数中传递 this
,然后使用它来获取数据属性值并将其传递给您的模态输入。
演示代码 :
function edit_partner(el) {
var link = $(el) //refer `a` tag which is clicked
var modal = $("#edit_partner") //your modal
var full_name = link.data('full_name')
var code = link.data('code')
modal.find('#full_name').val(full_name);
modal.find('#code').val(code);
}
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/css/bootstrap.min.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/js/bootstrap.min.js"></script>
<table>
<tr>
<td>
<!-- pass this inside function-->
<a href="#" onclick="edit_partner(this)" data-target="#edit_partner" data-toggle="modal" data-id="{{$partner->id}}" data-full_name="abc" data-code="1">abc</a>
</td>
</tr>
<tr>
<td>
<a href="#" onclick="edit_partner(this)" data-target="#edit_partner" data-toggle="modal" data-id="{{$partner->id}}" data-full_name="abc2" data-code="2">abc2</a>
</td>
</tr>
</table>
<div class="modal fade" id="edit_partner" role="dialog">
<div class="modal-dialog">
<!-- Modal content-->
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal">×</button>
<h4 class="modal-title">Modal Header</h4>
</div>
<div class="modal-body">
<p>Some text in the modal.</p>
<input type="text" id="full_name">
<input type="text" id="code">
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
</div>
</div>
</div>
</div>