silverstripe-tagfield/js/TagField.js
will 989e7cae08 Update TagField.js so tags with spaces can be added
The separator is hard coded as space or comma.  Not much is lost if you just delete the space separator option.  This allows people to add eg "Web Developer" as a job title tag.
2015-05-28 10:36:06 +01:00

72 lines
1.6 KiB
JavaScript

/**
* Register TagField functions with fields.
*/
(function ($) {
/*
* The multiple-select plugin (Chosen) applies itself to everything!
* We have to remove it before selectively applying select2, or
* we'll see an extra field where there should be only one.
*/
$.fn.chosenDestroy = function () {
$(this)
.show() // The field needs to be visible so Select2 evaluates the width correctly.
.removeClass('chzn-done')
.removeClass('has-chzn')
.next()
.remove();
return $(this);
};
$.entwine('ss', function ($) {
$('.ss-tag-field + .chzn-container').entwine({
applySelect2: function () {
var self = this,
$select = $(this).prev();
// There is a race condition where Select2 might not
// be bound to jQuery yet. So here we make sure Select2
// is defined before trying to invoke it.
if ($.fn.select2 === void 0) {
return setTimeout(function () {
self.applySelect2();
}, 0);
}
var options = {
'tags': true,
'tokenSeparators': [',']
};
if ($select.attr('data-ss-tag-field-suggest-url')) {
options.ajax = {
'url': $select.attr('data-ss-tag-field-suggest-url'),
'dataType': 'json',
'delay': 250,
'data': function (params) {
return {
'term': params.term
};
},
'processResults': function (data) {
return {
'results': data.items
};
},
'cache': true
}
}
$select
.chosenDestroy()
.select2(options);
},
onmatch: function () {
this.applySelect2();
}
});
});
})(jQuery);