Laravel,无法在验证时将旧值设置为引导日期时间选择器



我使用的是Laravel 8.5(当前版本(

因此,我是拉拉维尔的新手,我试图通过简单的例子来学习。

我有一些叶片视图,代码部分如下:

<div class="form-group">
<input type="hidden" id="hdnLocale" value="ru">
<input type="hidden" name="hdndefDate" id="hdndefDate" value="2021-01-17">
@if (old('hdndefDate'))
<input type="hidden" name="hdndefDate" value="{{ old('hdndefDate') }}">
@endif
<label for="picker">Birthday</label>
<div class="input-group">
<div class="input-group-prepend">
<button type="button" class="input-group-text" id="toggle">
<i class="fa fa-calendar-alt"></i>
</button>
</div>
<input type="text" id="picker" name="picker" value="{{old('picker')}}" class="form-control" readonly>
</div>
</div>

正如您所看到的,我使用了两个隐藏的输入,其中一个来自控制器的变量值必须从javaScript中设置(在一个简单的例子中,我使用精确的值(。

这是我的脚本:

<script>
var locale = $('#hdnLocale').val()
jQuery.datetimepicker.setLocale(locale)
jQuery.datetimepicker.setDateFormatter('moment')
var yourDate = $('#hdndefDate').val();
$('#picker').val(yourDate);
$('#picker').datetimepicker({
timepicker: false,
datepicker: true,
format: 'YYYY-MM-DD',
defaultDate: yourDate,
weeks: false,
hours12: false,
step: 15,
yearStart: 2015,
yearEnd: 2022,
dayOfWeekStart: 1
});
$('#toggle').on('click', function () {
$('#picker').datetimepicker('toggle');
})
</script>

我还有一些其他输入,我已经通过控制器进行了验证,
当我更改日期选择器的值时,后表单和验证失败,其他字段设置为旧值,日期选择器除外。我哪里搞砸了?当验证失败时,我想将旧值设置为datepicker。正如我后来发现的,旧值被设置并立即刷新为默认值"2021-01-17">

当这个输入的旧值存在时,似乎得到了两个名为hdndefDate的输入。

在JS中,您将从输入#hdndefDate中获取值,该值保存默认值。

将你的@if更改为这样的内容:


@if (old('hdndefDate'))
<input type="hidden" name="hdndefDate" id="hdndefDate" value="{{ old('hdndefDate') }}">
@else
<input type="hidden" name="hdndefDate" id="hdndefDate" value="2021-01-17">
@endif

甚至更好:

<input type="hidden" name="hdndefDate" id="hdndefDate" value="{{ old('hdndefDate') ??  2021-01-17}}">

最新更新