Basic Select
In order for the placeholder to appear, the first option in the list must be empty
HTML
<select data-fd-control="select" data-fd-callback="setOutputText" class="form-control" data-fd-allowsearch="false" data-fd-placeholder="Choose an option!"> <option></option> <option value="1">Option 1</option> <option value="2">Option 2</option> <option value="3">Option 3</option> </select>
JavaScript
FD.Page.setOutputText = function (data, event) { this.element.closest('.row').find('.output-data').text(data.value); this.element.closest('.row').find('.output-event').text(event.type); };
Multiselect
HTML
<select data-fd-control="select" data-fd-callback="setOutputText" class="form-control" multiple="multiple"> <option value="-1">Select</option> <option value="1">Option 1</option> <option value="2">Option 2</option> <option value="3">Option 3</option> </select>
JavaScript
FD.Page.setOutputText = function (data, event) { this.element.closest('.row').find('.output-data').text(data.value); this.element.closest('.row').find('.output-event').text(event.type); };
Default Ajax Options (Provider Only)
Default options contain a few assumptions:
- The controller action referenced in the asp-action attribute has a single string parameter called "term"
- The action returns a Json object with a single property: "results". The results field is a list of objects with two properties: ID (int) and Text (string).
HTML
<select class="form-control" data-fd-control="select" data-fd-callback="setOutputText" data-fd-minimuminputlength="1" asp-action="GetDefaultSearch"> </select>
JavaScript
FD.Page.setOutputText = function (data, event) { this.element.closest('.row').find('.output-data').text(data.value); this.element.closest('.row').find('.output-event').text(event.type); };
Custom Ajax Options with Initial Value
HTML
<select class="form-control" data-fd-control="select" data-fd-callback="setOutputText" data-fd-minimuminputlength="1" data-fd-ajaxbuilder="buildCustomAjax"> <option value="1" selected>Initially Selected Option!</option> </select>
JavaScript
FD.Page.setOutputText = function (data, event) { this.element.closest('.row').find('.output-data').text(data.value); this.element.closest('.row').find('.output-event').text(event.type); }; FD.Page.buildCustomAjax = function () { let that = this; return { url: "/Framework/Select/GetCustomSearch", data: function (params) { var query = { searchTerm: params.term, parentID: that.options.parentid }; // Query parameters will be ?searchTerm=[term]&parentID=[this.options.parentid] return query; }, processResults: function (data) { for (var x = 0; x < data.results.length; x++) { data.results[x].text = data.results[x].text + ' [Modified in JS]'; } return { results: data.results }; } }; };