2012-08-29 69 views
0

我想在我的網頁上有一個文本框,旁邊有一個圖片。當用戶點擊圖像時,它會顯示幫助用戶選擇日期的日曆(彈出日曆)。我已經在原始html中完成了。但現在我想使用django窗體(雖然我沒有任何模型),所以我搜索了一下,發現我必須在forms.py中編寫我自己的窗口小部件。 s.th像:點擊圖片彈出日曆:Django表格

class CalendarWidget(forms.TextInput): 
     css = ('/media/css/main.css', '/media/css/js-cal.css') 
     js = ('/media/js/js-cal.min.js') 

我有一個類backupFormforms.py它包含了所有表單域。

我的問題是:要使用上面的CalendarWidget,我應該在backupForm類中定義一個字段嗎?

date1 = forms.CharField(widget=CalendarWidget) 

我怎麼可以將圖像綁定到該文本框,並強制用戶只有輸入他的約會從這個日曆嗎?

回答

0

您可以使用輸入字段(文本框)的表單字段並將CalendatWidget用作該字段的窗口小部件。小部件負責創建/綁定作爲按鈕的圖像。

Django Admin自動使用表格字段model.DateField上的AdminDateWidget,儘管模型部分可以在django/contrib/admin/widgets.py中查看。檢查init()函數django/contrib/admin/static/admin/js/admin/DateTimeShortcuts.js知道Django如何將日曆按鈕創建/綁定到一個輸入字段。

你甚至可以在頭版使用AdminDateWidget,只要所需的CSS/JS資源的頁面加載,具有一定的屬性設置....

+0

感謝,但你所說的「小部件取平均創建/綁定作爲按鈕的圖像的責任。「?我無法理解我如何將圖像綁定到文本框。我應該怎麼做/在這行代碼之後? – user1597122

+0

@ user1597122以內置的DateTimeShortcuts.js爲例,它會在輸入(文本框在你的文字中)時被調用,並動態地創建一個''標籤,它對鼠標點擊事件作出反應,呈現日曆並填充選定的內容值返回到輸入,所有完成在JavaScript,refs [代碼在這裏](https://github.com/django/django/blob/master/django/contrib/admin/static/admin/js/admin/DateTimeShortcuts .js文件#L53) – okm