カレンダーを表示⇒日付選択で入力フォームに反映
カレンダーボタンから、カレンダーを表示し日付をクリックできます。
その後選択した日付が入力フォームに自動で反映される設定です。
※めちゃくちゃ簡素に書いてますmm
フォーム(forms.py)の設定
forms.py
from django import forms
#(中略)
class EnqueteForm(forms.Form):
birth = forms.DateField(
label='生年月日',
widget=forms.DateInput(format='%Y-%m-%d', attrs={'type': 'date'}),
# required=False
)
# 表示するための記述
def __init__(self,*args,**kwargs):
super().__init__(*args,**kwargs)
self.fields['birth'].widget.attrs['class']='form-control col-11'
Tabがこちらで反映されてない部分がありますので、適宜修正をお願いします。
ビュー(views.py)の設定
views.py
from .forms import EnqueteForm
# (中略)
class EnqueteView(generic.FormView):
template_name = "enquete.html"
form_class = EnqueteForm #forms.pyで作ったクラス名
success_url = reverse_lazy('information:enquete')
JavaScriptの設定(base.html)
base.html
<script>
$(function () {
// 日付は、年-月-日 の形式でお願いする。
let dateFormat = 'yy-mm-dd';
$('#id_created_at').datepicker({
dateFormat: dateFormat
});
});
// drag and drop event
$(document).ready(function() {
var obj = $("#dragandrophandler");
obj.on('dragenter', function (e) {
e.stopPropagation();
e.preventDefault();
$(this).css('border', '2px solid #0B85A1');
});
obj.on('dragover', function (e) {
e.stopPropagation();
e.preventDefault();
});
obj.on('drop', function(e) {
$(this).css('border', '2px dotted #0B85A1');
e.preventDefault();
var files = e.originalEvent.dataTransfer.files;
// Modal dialog
popupImage(file, obj);
});
// Avoid opening in a browser if the file is dropped outside the div
$(document).on('dragenter', function (e) {
e.stopPropagation();
e.preventDefault();
});
$(document).on('dragover', function (e) {
e.stopPropagation();
e.preventDefault();
obj.css('border', '2px dotted #0B85A1');
});
$(document).on('drop', function (e) {
e.stopPropagation();
e.preventDefault();
});
});
</script>
今回もJS部分はhtmlにべた書きしましたが、他にいい方法があったらご教示いただけますと幸いです。