Skip to content

Commit 3ca4238

Browse files
committed
- Find the closest common ancestor of two chained selects instead of assuming it is a form.
- Try to find the dependent field by its name attribute using a two-fold search strategy: exact match otherwise ends with
1 parent 10061a3 commit 3ca4238

File tree

1 file changed

+8
-1
lines changed

1 file changed

+8
-1
lines changed

django_select2/static/django_select2/django_select2.js

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,9 +26,16 @@
2626

2727
let dependentFields = $element.data('select2-dependent-fields')
2828
if (dependentFields) {
29+
const find_element = function(selector) {
30+
const result = $(selector, $element.closest(':has(' + selector + ')'))
31+
if (result.length > 0) return result
32+
else return null
33+
}
2934
dependentFields = dependentFields.trim().split(/\s+/)
3035
$.each(dependentFields, function (i, dependentField) {
31-
result[dependentField] = $('[name=' + dependentField + ']', $element.closest('form')).val()
36+
const name_is = '[name=' + dependentField + ']'
37+
const name_ends_with = '[name$=' + dependentField + ']'
38+
result[dependentField] = (find_element(name_is) || find_element(name_ends_with)).val()
3239
})
3340
}
3441

0 commit comments

Comments
 (0)