覆盖keyCode事件

时间:2017-11-21 14:25:10

标签: jquery django jquery-select2 django-autocomplete-light

我有一个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。那么我有办法做到这一点吗?

非常感谢任何帮助。

感谢您的时间。

0 个答案:

没有答案
相关问题