| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 |
- $(document).ready(function() {
- var search_field = $('#id_livesearch');
- var real_field = $('#id_' + search_field.attr('data-field'));
- var select_fields = $('#select select');
- var search_key = search_field.attr('data-key');
- var label = search_field.attr('data-label');
- if (!label) {
- label = 'name';
- }
- // Update livesearch text when real field changes
- if (real_field.val()) {
- search_field.val(real_field.children('option:selected').text());
- }
- real_field.change(function() {
- if (real_field.val()) {
- search_field.val(real_field.children('option:selected').text());
- } else {
- search_field.val('');
- }
- });
- search_field.autocomplete({
- source: function(request, response) {
- $.ajax({
- type: 'GET',
- url: search_field.attr('data-source'),
- data: search_key + '=' + request.term,
- success: function(data) {
- var choices = [];
- $.each(data.results, function (index, choice) {
- choices.push({
- value: choice.id,
- label: choice[label]
- });
- });
- response(choices);
- }
- });
- },
- select: function(event, ui) {
- event.preventDefault();
- search_field.val(ui.item.label);
- select_fields.val('');
- real_field.empty();
- select_fields.attr('disabled', 'disabled');
- real_field.append($("<option></option>").attr('value', ui.item.value).text(ui.item.label));
- real_field.change();
- // Disable parent selection fields
- // $('select[filter-for="' + real_field.attr('name') + '"]').val('');
- },
- minLength: 4,
- delay: 500
- });
- search_field.change(function() {
- if (!search_field.val()) {
- select_fields.removeAttr('disabled');
- select_fields.val('');
- }
- });
- });
|