LoginSignup
1
1

More than 1 year has passed since last update.

カレンダーを表示⇒日付をクリックすると入力フォームに自動入力される【Django】

Last updated at Posted at 2022-01-13

カレンダーを表示⇒日付選択で入力フォームに反映

カレンダーボタンから、カレンダーを表示し日付をクリックできます。
その後選択した日付が入力フォームに自動で反映される設定です。
※めちゃくちゃ簡素に書いてます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にべた書きしましたが、他にいい方法があったらご教示いただけますと幸いです。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1