我正在尝试使用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
然而,只要&gt; 1项,我得到一个&quot; itemView.submt不是一个函数&#39;错误。我知道这是因为现在有重复的表单名称。
问题:如何使用数组索引使表单名称唯一?
我试过这个没有运气。
@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
我确信这是可能的,不确定如何。
谢谢!
答案 0 :(得分:2)
您应该使用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();
});