Spaces:
Running
on
Zero
Running
on
Zero
/*global URLify*/ | |
; | |
{ | |
const $ = django.jQuery; | |
$.fn.prepopulate = function(dependencies, maxLength, allowUnicode) { | |
/* | |
Depends on urlify.js | |
Populates a selected field with the values of the dependent fields, | |
URLifies and shortens the string. | |
dependencies - array of dependent fields ids | |
maxLength - maximum length of the URLify'd string | |
allowUnicode - Unicode support of the URLify'd string | |
*/ | |
return this.each(function() { | |
const prepopulatedField = $(this); | |
const populate = function() { | |
// Bail if the field's value has been changed by the user | |
if (prepopulatedField.data('_changed')) { | |
return; | |
} | |
const values = []; | |
$.each(dependencies, function(i, field) { | |
field = $(field); | |
if (field.val().length > 0) { | |
values.push(field.val()); | |
} | |
}); | |
prepopulatedField.val(URLify(values.join(' '), maxLength, allowUnicode)); | |
}; | |
prepopulatedField.data('_changed', false); | |
prepopulatedField.on('change', function() { | |
prepopulatedField.data('_changed', true); | |
}); | |
if (!prepopulatedField.val()) { | |
$(dependencies.join(',')).on('keyup change focus', populate); | |
} | |
}); | |
}; | |
} | |