我正在尝试使用foreach循环生成一个表单列表。这些表单只是项目名称,它们使用POST将它们的id传递给我的控制器,以便它们可以更新。我使用onclick="form.submit()“来获取操作。
当列表中只有一项时,这将按预期工作。
@foreach($items as $item)
{{ Form::open(['url'=>'item/view', 'name'=>'itemView']) }}
{{ Form::hidden('id', $item->id ) }}
<li><a href="#" onclick="itemView.submit()">{{ $item->name }}</a></li>
{{ Form::close() }}
@endforeach
然而,只要有>1个项目,我就会得到一个'itemView.submt is not a function‘错误。我怀疑这是因为现在有重复的表单名称。
问:如何使用数组索引使表单名称唯一?
我已经试过了,但没有成功。
@foreach($items as $item)
{{ Form::open(['url'=>'item/view', 'name'=>'itemView[]']) }}
{{ Form::hidden('id', $item->id ) }}
<li><a href="#" onclick="itemView[].submit()">{{ $item->name }}</a></li>
{{ Form::close() }}
@endforeach
我相信这是可能的,但不确定是如何做到的。
谢谢!
发布于 2018-02-23 17:08:22
您应该将函数与onclick
一起使用,例如:
@foreach($items as $key => $item)
{{ Form::open(['url'=>'item/view', 'name'=>'itemView[]']) }}
{{ Form::hidden('id', $item->id ) }}
<li><a href="#" onclick="submitForm({{ $key }})">{{ $item->name }}</a></li>
{{ Form::close() }}
@endforeach
但更好的方法是将所有JS保存在JS文件中,并保存到not mix PHP and JS中,如我在我的存储库中所示:
<a href="#" class="js_link">{{ $item->name }}</a></li>
JS可能看起来像这样:
$('.js_link').on('click', function(e) {
$(this).closest('form').submit();
});
https://stackoverflow.com/questions/48952869
复制相似问题