Я могу подтвердить поведение на Django 1.2.1.
Проблема:
Похоже, admin/js/SelectFilter2.js
регистрирует обработчик повышения ключа для выполнения фильтрации.Этот обработчик также возвращает false, если ключом был ключ ввода, который пытается отменить отправку формы.
Из строки admin / js / SelectFilter2.js 85 или около того:
// don't submit form if user pressed Enter
if ((event.which && event.which == 13) || (event.keyCode && event.keyCode == 13)) {
from.selectedIndex = 0;
SelectBox.move(field_id + '_from', field_id + '_to');
from.selectedIndex = 0;
return false;
}
Мне показалось, что это нормально, поэтому я добавил обработчик событий в конце метода init
вперехватить событие отправки формы:
addEvent(document.forms[0], 'submit', function(event) {
console.log("Form submitted");
}
После этого становится ясно, что отправка запускает до события keyUp
.Таким образом, нажатие клавиши ввода отправляет форму, и событие keyUp
никогда не попадает в поле.
Обходной путь:
Я смог обойти поведение, отбросив все вводимые keyUp
в самой форме.Добавьте это в конец метода init в SelectFilter2.js
:
addEvent(document.forms[0], 'keyup', function(event) {
if (event.keyCode && event.keyCode == 13) {
return false;
}
});
Это быстрый и грязный способ решения проблемы, но событие формы запускается после события поля, поэтому оно, кажется, работает,Но он также не дает ключу ввода отправлять форму везде.
Вероятно, это должно быть зарегистрировано как ошибка django .