【问题标题】:Laravel, can't set old value to bootstrap datetimepicker, when validateLaravel,验证时无法将旧值设置为引导 datetimepicker
【发布时间】:2021-07-30 01:55:42
【问题描述】:

我使用的是 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'

【问题讨论】:

    标签: laravel datetimepicker


    【解决方案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}}">
    

    【讨论】:

      猜你喜欢
      • 2016-11-04
      • 2018-05-03
      • 1970-01-01
      • 1970-01-01
      • 2013-05-10
      • 1970-01-01
      • 2019-12-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多