我有一个Django
个应用,我使用django-autocomplete-light作为我的选择列表。但是,我需要更改来自select2自动完成使用的基础JavaScript
模块的按键事件的默认行为。可以找到select2
中的相关代码here,这就是我想要更改的内容。
基本上我想将keypress
事件更改为:
this.on('keypress', function (evt) {
var key = evt.which;
if (self.isOpen()) {
if (key === KEYS.ESC) {
self.close();
evt.preventDefault();
} else if (key === KEYS.ENTER) {
self.trigger('results:select', {});
evt.preventDefault();
} else if ((key === KEYS.SPACE && evt.ctrlKey)) {
self.trigger('results:toggle', {});
evt.preventDefault();
} else if (key === KEYS.UP) {
self.trigger('results:previous', {});
evt.preventDefault();
} else if (key === KEYS.DOWN || KEYS.TAB) {
self.trigger('results:next', {});
evt.preventDefault();
}
} else {
if (key === KEYS.ENTER || key === KEYS.TAB) {
self.open();
evt.preventDefault();
}
}
});
其中KEYS.pressedbutton
等同于相应的js键码。
我的模板(有一些遗漏)如下所示:
{% block content %}
<div>
<h1 class="text-center">Create New Activity</h1>
<div class="row">
<div class="col"></div>
<div class="col-md-8 col-lg-8">
<form role="form" method="post">
{% csrf_token %}
{{ form|crispy }}
<hr>
<h4>Add Key Characteristics</h4>
<div id="formset">
{{ activitykeycharacteristics_formset.management_form }}
{% for form in activitykeycharacteristics_formset.forms %}
<div id="{{ activitykeycharacteristics_formset.prefix }}-forms">
<div class="form-inline">
{% for field in form.visible_fields %}
<div class="form-group">
<label for="{{ field.id_for_label }}" class="form-control-label m-2 requiredField">
{{ field.label }}
<span class="asteriskField">*</span>
</label>
{{ field|add_class:"form-control" }}
{{ field.errors }}
</div>
{% endfor %}
{% for hidden in form.hidden_fields %}
{{ hidden }}
{% endfor %}
</div>
</div>
<div id="form-controls">
<button type="button" class="btn btn-primary" id="add-form"><i class="fa fa-plus"></i></button>
</div>
<div id="empty-form" style="display: none;">
<div class="form-inline">
{% for field in activitykeycharacteristics_formset.empty_form.visible_fields %}
<div class="form-group">
<label for="{{ field.id_for_label }}" class="form-control-label m-2 requiredField">
{{ field.label }}
<span class="asteriskField">*</span>
</label>
{{ field|add_class:"form-control" }}
{{ field.errors }}
</div>
{% endfor %}
{% for hidden in activitykeycharacteristics_formset.empty_form.hidden_fields %}
{{ hidden }}
{% endfor %}
<button type="button" class="btn btn-secondary m-2 del-kc" id="delete-form"><i class="fa fa-trash fa-lg"></i></button>
</div>
</div>
{% endfor %}
</div>
<hr>
<button class="primaryAction btn btn-primary pull-right ml-1" type="submit">{% trans "Submit" %}</button>
<a class="btn btn-secondary pull-right" href="{{ request.META.HTTP_REFERER }}" role="button">{% trans "Cancel" %}</a>
</form>
</div>
<div class="col"></div>
</div>
</div>
{% endblock content %}
{% block javascript %}
{{ block.super }}
<script type="text/javascript" src="{% static 'admin/js/vendor/jquery/jquery.js' %}"></script>
/////This is where the js file I want to change is included/////
{{ activitykeycharacteristics_formset.media }}
{% endblock %}
我还没有找到一种可以做到这一点的方法。由于底层的js和css包含在我的formset的媒体中(由模块提供),我甚至不确定我是否可以直接访问包含的js。那么我有办法做到这一点吗?
非常感谢任何帮助。
感谢您的时间。