remote.js

#

The default deck getValue() implementation just returns the PK from the choice HTML. RemoteAutocompleteWidget.getValue's implementation checks for a url too. If a url is found, it will post to that url and expect the pk to be in the response.

This is how autocomplete-light supports proposing values that are not there in the database until user selection.

var RemoteAutocompleteWidget = {
    */
    getValue: function(choice) {
        var value = choice.data('value');

        if (typeof(value)=='string' && isNaN(value) && value.match(/^https?:/)) {
            $.ajax(this.autocompleteOptions.url, {
                async: false,
                type: 'post',
                data: {
                    'value': value
                },
                success: function(text, jqXHR, textStatus) {
                    value = text;
                }
            });

            choice.data('value', value);
        }

        return value;
    }
}

$(document).bind('yourlabsWidgetReady', function() {
#

Instanciate decks with RemoteAutocompleteWidget as override for all widgets with autocomplete 'remote'.

    $('body').on('initialize', '.autocomplete-light-widget[data-bootstrap=rest_model]', function() {
        $(this).yourlabsWidget(RemoteAutocompleteWidget);
    });
});