Как делают получить кнопки для не взятия фокуса?

Вам необходимо создать функцию shadowing для свойства в модели. Я имею в виду, что вам нужно будет воссоздать функцию в классе ModelAdmin с тем же именем, что и у свойства, определенного в основной модели.

Пример:

# Model
class Product(models.Model):

    @property  # you can omit this directive
    def in_stock(self):
        # boolean check return
        return self.quantity > 0

...

# Django-modeladmin
class ProductAdmin(admin.ModelAdmin):
    list_display = ('in_stock', ...)
    def in_stock(self, instance):
        return instance.in_stock

    in_stock.boolean = True        
22
задан Bob Stein 17 March 2016 в 00:00
поделиться

5 ответов

document.activeElement сохраняет текущий фокусируемый элемент.

Итак, на панели инструментов вы можете добавить обработчик «mousedown» к этой функции:

function preventFocus() {
  var ae = document.activeElement;
  setTimeout(function() { ae.focus() }, 1);
}

Попробуйте этот пример:

<html>
<head>
<script>
function preventFocus() {
  var ae = document.activeElement;
    setTimeout(function() { ae.focus() }, 1);
}
</script>
</head>
<body>
<input type="text"/>
<input type="button" onmousedown="preventFocus()" onclick="alert('clicked')" value="Toolbar" />
</body>
</html>
6
ответ дан 29 November 2019 в 04:33
поделиться

Я не думаю, что есть простой способ сделать то, что вы хотите, потому что это поведение браузера по умолчанию.

Вы, конечно, можете размыть () кнопку, как только она станет щелкнул, но это просто отменит выбор всего. Чтобы ранее активный объект вернулся в фокус, вам необходимо создать своего рода «память», добавив обработчик размытия для каждого элемента, чтобы отслеживать, какой элемент имел / потерял фокус последним (сохранить идентификатор элемента в глобальном и обновлять его, когда элемент теряет фокус).

3
ответ дан 29 November 2019 в 04:33
поделиться

Может быть, вам стоит попробовать использовать stateful и свойства изменения состояния для полей формы или чего-то еще, чтобы вернуть фокус?

0
ответ дан 29 November 2019 в 04:33
поделиться

Поскольку кнопки панели инструментов стилизованы под обычные элементы кнопок HTML, то это фактическое поведение браузера , и вы должны дважды подумать, прежде чем его менять. НО ТЕМ НЕМЕНЕЕ...

0
ответ дан 29 November 2019 в 04:33
поделиться

Я бы прикрепил один прослушиватель событий размытия ко всем полям. Этот слушатель должен сохранить поле, потерявшее фокус, в глобальной переменной.

Тогда все кнопки панели инструментов должны получить один слушатель событий фокуса. Этот слушатель должен сфокусировать поле, которое было сохранено, как описано выше.

Этот код должен работать, хотя он не тестировал его

0
ответ дан 29 November 2019 в 04:33
поделиться
Другие вопросы по тегам:

Похожие вопросы: