Laravel HTML Jquery 通过选择图像输入总是return 最高值?
Laravel HTML Jquery input by selecting image always return the highest value?
我有这个html代码
<div class="gallery__item set-bg">
<img class="card-img-top" src="{{asset($template->image_path)}}" alt="" data-value="image-value">
<input type="hidden" id="image-value" name="selected_image" value="{{$template->id}}">
</div>
渲染到这个 html
<img class="card-img-top highlighted" src="http://someurl.test/templates//1 (14).jpg" alt="" data-value="image-value">
<input type="hidden" id="image-value" name="selected_image" value="6">
</div>
我用这个jquery
$('#select-form img').click(function() {
// Set the form value
$('#image-value').val($(this).attr('data-value'));
// Unhighlight all the images
$('#select-form img').removeClass('highlighted');
// Highlight the newly selected image
$(this).addClass('highlighted');
});
</script>
这是我的 laravel 函数
// post template data
public function postTemplate(Request $request)
{
$selected_image = $request->selected_image;
dd($selected_image);
}
问题是$selected_image
总是获取页面中的最高值,我做错了什么?以及如何解决这个问题?谢谢
注意:html 上的值在单击时已按预期更改
任何线索都会有所帮助..
问题是您的页面上有多个 selected_image
输入。您还必须使用适当的 ID 填充图像的 data-value
属性。
当用户单击图像时,jQuery 代码读取所选图像的 data-value
属性并将 selected_image
字段的 value
设置为该 ID。
根据您的 jQuery 脚本,您的代码应如下所示:
<!-- Don't forget to modify the form's action attribute if necessary -->
<form id="select-form" method="POST" action="/template">
{{ csrf_field() }}
<!-- Put selected_image outside of the loop -->
<input type="hidden" id="image-value" name="selected_image" value="">
@foreach ($templates as $template)
<div class="gallery__item set-bg">
<img class="card-img-top" src="{{asset($template->image_path)}}" alt="" data-value="{{$template->id}}">
</div>
@endforeach
<button type="submit">Submit</button>
</form>
希望对您有所帮助。
根据 Andras 的回答,我只是稍微编辑了一下,就可以了
@csrf
@foreach ($templates as $template)
<div class="col-lg-4 col-md-6 col-sm-6 mix story_f">
<div class="gallery__item set-bg">
<img class="card-img-top" src="{{asset($template->image_path)}}" alt="" data-value="{{$template->id}}">
</div>
</div>
@endforeach
<input type="hidden" id="image-value" name="selected_image" value="{{$template->id}}">
</div>
<div class="text-center">
<button type="submit" class="site-btn">Preview Template</button>
</div>
</form>
我有这个html代码
<div class="gallery__item set-bg">
<img class="card-img-top" src="{{asset($template->image_path)}}" alt="" data-value="image-value">
<input type="hidden" id="image-value" name="selected_image" value="{{$template->id}}">
</div>
渲染到这个 html
<img class="card-img-top highlighted" src="http://someurl.test/templates//1 (14).jpg" alt="" data-value="image-value">
<input type="hidden" id="image-value" name="selected_image" value="6">
</div>
我用这个jquery
$('#select-form img').click(function() {
// Set the form value
$('#image-value').val($(this).attr('data-value'));
// Unhighlight all the images
$('#select-form img').removeClass('highlighted');
// Highlight the newly selected image
$(this).addClass('highlighted');
});
</script>
这是我的 laravel 函数
// post template data
public function postTemplate(Request $request)
{
$selected_image = $request->selected_image;
dd($selected_image);
}
问题是$selected_image
总是获取页面中的最高值,我做错了什么?以及如何解决这个问题?谢谢
注意:html 上的值在单击时已按预期更改
任何线索都会有所帮助..
问题是您的页面上有多个 selected_image
输入。您还必须使用适当的 ID 填充图像的 data-value
属性。
当用户单击图像时,jQuery 代码读取所选图像的 data-value
属性并将 selected_image
字段的 value
设置为该 ID。
根据您的 jQuery 脚本,您的代码应如下所示:
<!-- Don't forget to modify the form's action attribute if necessary -->
<form id="select-form" method="POST" action="/template">
{{ csrf_field() }}
<!-- Put selected_image outside of the loop -->
<input type="hidden" id="image-value" name="selected_image" value="">
@foreach ($templates as $template)
<div class="gallery__item set-bg">
<img class="card-img-top" src="{{asset($template->image_path)}}" alt="" data-value="{{$template->id}}">
</div>
@endforeach
<button type="submit">Submit</button>
</form>
希望对您有所帮助。
根据 Andras 的回答,我只是稍微编辑了一下,就可以了
@csrf @foreach ($templates as $template)
<div class="col-lg-4 col-md-6 col-sm-6 mix story_f">
<div class="gallery__item set-bg">
<img class="card-img-top" src="{{asset($template->image_path)}}" alt="" data-value="{{$template->id}}">
</div>
</div>
@endforeach
<input type="hidden" id="image-value" name="selected_image" value="{{$template->id}}">
</div>
<div class="text-center">
<button type="submit" class="site-btn">Preview Template</button>
</div>
</form>