select-script.blade.php 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. @include('admin::scripts.select')
  2. <script require="@select2">
  3. var configs = {!! admin_javascript_json($configs) !!};
  4. @yield('admin.select-ajax')
  5. @if(isset($remoteOptions))
  6. $.ajax({!! admin_javascript_json($remoteOptions) !!}).done(function(data) {
  7. configs.data = data;
  8. $("{!! $selector !!}").each(function (_, select) {
  9. select = $(select);
  10. select.select2(configs);
  11. var value = select.data('value') + '';
  12. if (value) {
  13. select.val(value.split(',')).trigger("change")
  14. }
  15. });
  16. });
  17. @else
  18. $("{!! $selector !!}").select2(configs);
  19. @endif
  20. </script>
  21. @if(isset($loads))
  22. {{--loads联动--}}
  23. <script once>
  24. var selector = '{!! $selector !!}';
  25. var fields = '{!! $loads['fields'] !!}'.split('^');
  26. var urls = '{!! $loads['urls'] !!}'.split('^');
  27. var refreshOptions = function(url, target) {
  28. $.ajax(url).then(function(data) {
  29. target.find("option").remove();
  30. $(target).select2({
  31. data: $.map(data, function (d) {
  32. d.id = d.{{ $loads['idField'] }};
  33. d.text = d.{{ $loads['textField'] }};
  34. return d;
  35. })
  36. }).val(target.data('value').split(',')).trigger('change');
  37. });
  38. };
  39. $(document).off('change', selector);
  40. $(document).on('change', selector, function () {
  41. var _this = this;
  42. var promises = [];
  43. fields.forEach(function(field, index){
  44. var target = $(_this).closest('.fields-group').find('.' + fields[index]);
  45. if (_this.value !== '0' && ! _this.value) {
  46. return;
  47. }
  48. promises.push(refreshOptions(urls[index] + "?q="+ _this.value, target));
  49. });
  50. $.when(promises).then(function() {});
  51. });
  52. $(selector).trigger('change');
  53. </script>
  54. @endif
  55. @yield('admin.select-load')
  56. {{--本地化--}}
  57. @yield('admin.select-lang')