Javascript 如果没有您的帮助,本可以识别相关的JS文件或handleCalendarCallback函数。我选择了选项2;这是相当具有挑战性的,但它的工作!第一次单击日期选择器时,似乎会触发“焦点”,但在选择新日期后,焦点似乎不会再次触发,因为在下次单击日期选择器之前
Javascript 如果没有您的帮助,本可以识别相关的JS文件或handleCalendarCallback函数。我选择了选项2;这是相当具有挑战性的,但它的工作!第一次单击日期选择器时,似乎会触发“焦点”,但在选择新日期后,焦点似乎不会再次触发,因为在下次单击日期选择器之前,javascript,django,Javascript,Django,如果没有您的帮助,本可以识别相关的JS文件或handleCalendarCallback函数。我选择了选项2;这是相当具有挑战性的,但它的工作!第一次单击日期选择器时,似乎会触发“焦点”,但在选择新日期后,焦点似乎不会再次触发,因为在下次单击日期选择器之前,日期值不会有所不同。我在包含表单字段的div上设置了id。{{form.time|u filter|as_crispy_field}关于如何让这个解决方案发挥作用,有什么想法吗?谢谢你的另一个令人惊讶的答案。如果没有您的帮助,我永远不会识别相
如果没有您的帮助,本可以识别相关的JS文件或
handleCalendarCallback
函数。我选择了选项2;这是相当具有挑战性的,但它的工作!第一次单击日期选择器时,似乎会触发“焦点”,但在选择新日期后,焦点似乎不会再次触发,因为在下次单击日期选择器之前,日期值不会有所不同。我在包含表单字段的div上设置了id。{{form.time|u filter|as_crispy_field}关于如何让这个解决方案发挥作用,有什么想法吗?谢谢你的另一个令人惊讶的答案。如果没有您的帮助,我永远不会识别相关的JS文件或handleCalendarCallback
函数。我选择了选项2;这是相当具有挑战性的,但它的工作!第一次单击日期选择器时,似乎会触发“焦点”,但在选择新日期后,焦点似乎不会再次触发,因为在下次单击日期选择器之前,日期值不会有所不同。我在包含表单字段的div上设置了id。{{form.time{u filter}as{u crispy{u field}有没有想法让这个解决方案起作用?
# models.py
class Article(models.Model):
date = models.DateField(
help_text="Article publication date"
)
# admin.py
@admin.register(Article)
class ArticleAdmin(admin.ModelAdmin):
change_form_template = "article_extension.html"
<input type="text" ... id="id_date">
# article_extension.html
{% extends "admin/change_form.html" %}
{% block extrahead %}
block.super
<script type="text/javascript">
window.onload = function() {
var dateInput = document.getElementById("id_date");
dateInput.addEventListener('input', dateListener);
function dateListener() {
console.log("date event recognized");
}
}
</script>
{% endblock %}
handleCalendarCallback: function(num) {
var format = get_format('DATE_INPUT_FORMATS')[0];
// the format needs to be escaped a little
format = format.replace('\\', '\\\\')
.replace('\r', '\\r')
.replace('\n', '\\n')
.replace('\t', '\\t')
.replace("'", "\\'");
return function(y, m, d) {
DateTimeShortcuts.calendarInputs[num].value = new Date(y, m - 1, d).strftime(format);
DateTimeShortcuts.calendarInputs[num].focus();
document.getElementById(DateTimeShortcuts.calendarDivName1 + num).style.display = 'none';
};
},
class AdminDateWidget(forms.DateInput):
class Media:
js = [
'admin/js/calendar.js',
'admin/js/admin/MyVersionOfDateTimeShortcuts.js',
]
def __init__(self, attrs=None, format=None):
attrs = {'class': 'vDateField', 'size': '10', **(attrs or {})}
super().__init__(attrs=attrs, format=format)
var dateValue;
window.onload = function() {
var dateInput = document.getElementById("id_date");
dateInput.addEventListener('focus', dateListener);
function dateListener(event) {
if (dateValue === event.target.value) {
return
}
dateValue = event.target.value;
// put the stuff you actually want to happen here
}
}