#laravel #datetimepicker
Вопрос:
Я использую Laravel 8.5 (текущая версия)
Поэтому я новичок в laravel, я пытаюсь учиться на простых примерах.
У меня есть некоторый вид лезвия, с приведенной ниже кодовой частью:
<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, форма записи и проверка не выполняются, в других полях задаются старые значения, кроме datepicker.
Где я что-то напутал? Я хочу установить старое значение в datepicker, когда проверка завершится неудачей.
Как я обнаружил позже, старое значение установлено и немедленно обновляется значением по умолчанию «2021-01-17».
Ответ №1:
Похоже, вы получаете два входа с именем 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}}">