Skip to content

Commit f781527

Browse files
authored
Fix #136 -- Support dependent fields in formsets (#316)
* 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 Special thanks to @rez0n
1 parent 6e6fdd9 commit f781527

File tree

1 file changed

+8
-1
lines changed

1 file changed

+8
-1
lines changed

Diff for: django_select2/static/django_select2/django_select2.js

+8-1
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 findElement = 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 nameIs = `[name=${dependentField}]`
37+
const nameEndsWith = `[name$=-${dependentField}]`
38+
result[dependentField] = (findElement(nameIs) || findElement(nameEndsWith)).val()
3239
})
3340
}
3441

0 commit comments

Comments
 (0)