summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--django/contrib/admin/static/admin/js/change_form.js22
-rw-r--r--django/contrib/admin/templates/admin/change_form.html3
2 files changed, 17 insertions, 8 deletions
diff --git a/django/contrib/admin/static/admin/js/change_form.js b/django/contrib/admin/static/admin/js/change_form.js
index eafc6e5f14..7fc8991727 100644
--- a/django/contrib/admin/static/admin/js/change_form.js
+++ b/django/contrib/admin/static/admin/js/change_form.js
@@ -1,9 +1,17 @@
-(function($) {
+(function() {
'use strict';
- $(document).ready(function() {
- var modelName = $('#django-admin-form-add-constants').data('modelName');
- if (modelName) {
- $('form#' + modelName + '_form :input:visible:enabled:first').focus();
+ var inputTags = ['BUTTON', 'INPUT', 'SELECT', 'TEXTAREA'];
+ var modelName = document.getElementById('django-admin-form-add-constants').dataset.modelName;
+ if (modelName) {
+ var form = document.getElementById(modelName + '_form');
+ for (var i = 0; i < form.elements.length; i++) {
+ var element = form.elements[i];
+ // HTMLElement.offsetParent returns null when the element is not
+ // rendered.
+ if (inputTags.includes(element.tagName) && !element.disabled && element.offsetParent) {
+ element.focus();
+ break;
+ }
}
- });
-})(django.jQuery);
+ }
+})();
diff --git a/django/contrib/admin/templates/admin/change_form.html b/django/contrib/admin/templates/admin/change_form.html
index fe19b40e85..21b1c9bceb 100644
--- a/django/contrib/admin/templates/admin/change_form.html
+++ b/django/contrib/admin/templates/admin/change_form.html
@@ -68,7 +68,8 @@
src="{% static 'admin/js/change_form.js' %}"
{% if adminform and add %}
data-model-name="{{ opts.model_name }}"
- {% endif %}>
+ {% endif %}
+ async>
</script>
{% endblock %}