開発環境
MacOS Catalina
ブラウザ Chrome
Laravel 5.5.50
PHP 7.3.11
bootstrap4.3.1
Laravelとbootstarp4でdatepickerを使用したアプリケーションを作成しております。
新規作成フォームではdatepickerを期待通りに動作できましたので、
同じ要領で編集フォームに実装したところ以下のエラーがログに出力され、値を変更できなくなってしまいました。
ライブラリがバグって関数を再帰呼び出しする無限ループを引き起こしているようです。
使用中のライブラリ
一番下の行のtempusdominus-bootstrap-4.min.jsがdatepickerのようでここが一番怪しいです。
一番上のajaxzip3.jsは郵便番号から住所検索するためのライブラリです。
HTML
1 <script src="{{url('/js/ajaxzip3.js')}}" charset="UTF-8"></script> 2 <script src="https://use.fontawesome.com/releases/v5.7.2/js/all.js" integrity="sha384-0pzryjIRos8mFBWMzSSZApWtPl/5++eIfzYmTgBBmXYdhvxPc+XcFEk+zJwDgWbP" crossorigin="anonymous"></script> 3 <script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script> 4 <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js" integrity="sha384-UO2eT0CpHqdSJQ6hJty5KVphtPhzWj9WO1clHTMGa3JDZwrnQq4sF86dIHNDz0W1" crossorigin="anonymous"></script> 5 <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM" crossorigin="anonymous"></script> 6 <script src="https://use.fontawesome.com/releases/v5.7.2/js/all.js" integrity="sha384-0pzryjIRos8mFBWMzSSZApWtPl/5++eIfzYmTgBBmXYdhvxPc+XcFEk+zJwDgWbP" crossorigin="anonymous"></script> 7 <script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.24.0/moment.min.js"></script> 8 <script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.24.0/locale/ja.js"></script> 9 <script src="https://cdnjs.cloudflare.com/ajax/libs/tempusdominus-bootstrap-4/5.1.2/js/tempusdominus-bootstrap-4.min.js"></script>
html
1<input type="text" class="form-control datetimepicker-input" 2id="birthday" data-toggle="datetimepicker" data-target="#birthday" name="birthday" value="{{ old('birthday') }}" /> 3
上記タグで value属性がない場合は正常に動作することを確認できております。
このoldに渡されている値をdd($request->birthday)として確認すると
"1985-06-28"
という期待通りの値が入っているのですが、
いざブラウザで表示させると
datepickerが一瞬その値が表示された後、強制的に以下の写真のように上書きしてきます。
また、この状態ではピッカーは表示されず、値を手動で変えることもできません。
オプションのフォーマットはYYYY-MM-DDですので無視されてしまっています。
javascript
1<script type="text/javascript"> 2 $(function () { 3 $('#birthday').datetimepicker({ 4 format: 'YYYY-MM-DD', 5 locale: 'ja', 6 dayViewHeaderFormat: 'YYYY年 MMM', 7 }); 8 }); 9 10</script>
どなたか解決法をご存知ないでしょうか?
回答1件
あなたの回答
tips
プレビュー