select.blade.php 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. <script>
  2. @section('admin.select-ajax')
  3. @if(isset($ajax))
  4. configs = $.extend(configs, {
  5. ajax: {
  6. url: "{{ $ajax['url'] }}",
  7. dataType: 'json',
  8. delay: 250,
  9. data: function (params) {
  10. return {
  11. q: params.term,
  12. page: params.page
  13. };
  14. },
  15. processResults: function (data, params) {
  16. params.page = params.page || 1;
  17. return {
  18. results: $.map(data.data, function (d) {
  19. d.id = d.{{ $ajax['idField'] }};
  20. d.text = d.{{ $ajax['textField'] }};
  21. return d;
  22. }),
  23. pagination: {
  24. more: data.next_page_url
  25. }
  26. };
  27. },
  28. cache: true
  29. },
  30. escapeMarkup: function (markup) {
  31. return markup;
  32. }
  33. });
  34. @endif
  35. @overwrite
  36. </script>
  37. @section('admin.select-load')
  38. @if(isset($load))
  39. <script once>
  40. var selector = '{!! $selector !!}';
  41. $(document).off('change', selector);
  42. $(document).on('change', selector, function () {
  43. var target = $(this).closest('{{ $load['group'] ?? '.fields-group' }}').find(".{{ $load['class'] }}");
  44. var values = [];
  45. $(this).find('option:selected').each(function () {
  46. if (String(this.value) === '0'|| this.value) {
  47. values.push(this.value)
  48. }
  49. });
  50. if (! values.length) {
  51. return;
  52. }
  53. target.find("option").remove();
  54. Dcat.loading();
  55. $.ajax("{!! $load['url'].(strpos($load['url'],'?')?'&':'?') !!}q="+values.join(',')).then(function (data) {
  56. Dcat.loading(false);
  57. $.map(data, function (d) {
  58. target.append(new Option(d.{{ $load['textField'] }}, d.{{ $load['idField'] }}, false, false));
  59. });
  60. target.val(String(target.attr('data-value')).split(',')).trigger('change');
  61. });
  62. });
  63. $(selector).trigger('change');
  64. </script>
  65. @endif
  66. @overwrite