You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
43 lines
1.5 KiB
43 lines
1.5 KiB
/*global URLify*/ |
|
'use strict'; |
|
{ |
|
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); |
|
} |
|
}); |
|
}; |
|
}
|
|
|