diff options
| author | Mark Weiman <mark.weiman@markzz.com> | 2015-10-11 01:00:38 -0400 |
|---|---|---|
| committer | Mark Weiman <mark.weiman@markzz.com> | 2015-10-11 01:00:38 -0400 |
| commit | 57aa89824a8dabb631c15af986a39e779d0fe3cb (patch) | |
| tree | 2df3bf79026e1c544e57375566297bcc7634afa5 /static/admin/js/prepopulate.js | |
| download | website-57aa89824a8dabb631c15af986a39e779d0fe3cb.tar.gz website-57aa89824a8dabb631c15af986a39e779d0fe3cb.zip | |
inital
Diffstat (limited to 'static/admin/js/prepopulate.js')
| -rw-r--r-- | static/admin/js/prepopulate.js | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/static/admin/js/prepopulate.js b/static/admin/js/prepopulate.js new file mode 100644 index 0000000..db7903a --- /dev/null +++ b/static/admin/js/prepopulate.js @@ -0,0 +1,39 @@ +(function($) { + $.fn.prepopulate = function(dependencies, maxLength) { + /* + 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 + */ + return this.each(function() { + var prepopulatedField = $(this); + + var populate = function () { + // Bail if the field's value has been changed by the user + if (prepopulatedField.data('_changed')) { + return; + } + + var values = []; + $.each(dependencies, function(i, field) { + field = $(field); + if (field.val().length > 0) { + values.push(field.val()); + } + }); + prepopulatedField.val(URLify(values.join(' '), maxLength)); + }; + + prepopulatedField.data('_changed', false); + prepopulatedField.change(function() { + prepopulatedField.data('_changed', true); + }); + + if (!prepopulatedField.val()) { + $(dependencies.join(',')).keyup(populate).change(populate).focus(populate); + } + }); + }; +})(django.jQuery); |
