Tokenfield - allow only tokens from source

3k Views Asked by At

I'm trying to use Tokenfield plugin - http://sliptree.github.io/bootstrap-tokenfield

How can I restrict use only tokens from source?

$('#tokenfield_platform').tokenfield({
autocomplete: {
source: [
        {% for platform_item in platforms %}
        '{{ platform_item }}',
    {% endfor %}
],
delay: 100
},
createTokensOnBlur:true,
showAutocompleteOnFocus: true
}).on('tokenfield:createtoken', function (event) {
    var existingTokens = $(this).tokenfield('getTokens');
    $.each(existingTokens, function(index, token) {
    if (token.value === event.attrs.value)
        event.preventDefault();
    });
    //var available_tokens = bloodhound_tokens.index.datums;
    // I do not want to use Twitter Typeahead, but only tokens from source
    var exists = true;
    $.each([available_tokens, function(index, token) {
    if (token.value === event.attrs.value)
        exists = false;
    });
    if(exists === true)
    event.preventDefault();
});

Thanks for any info.

1

There are 1 best solutions below

0
On

Using listener tokenfield:createtoken you can validate the token before creating it.

Info: http://sliptree.github.io/bootstrap-tokenfield/#events

$('#tokenfield_platform').on('tokenfield:createtoken', function (event) {
    var exists = false;
    $.each(yourSource, function(index, value) {
            if (event.attrs.value === value) {
                exists = true;
            }
    });
    if(!exists) {
            event.preventDefault(); //prevents creation of token
    }
});