github.com/kotovmak/go-admin@v1.1.1/template/types/tmpls/choose_ajax.tmpl (about)

     1  {{define "choose_ajax"}}
     2      <script>
     3  
     4          let {{.Field}}_updateBoxSelections = function (selectObj, new_opts) {
     5              selectObj.html('');
     6              new_opts.forEach(function (opt) {
     7                  selectObj.append($('<option value="' + opt["id"] + '">' + opt["text"] + '</option>'));
     8              });
     9              selectObj.bootstrapDualListbox('refresh', true);
    10          };
    11  
    12          let {{.Field}}_req = function (selectObj, box, event) {
    13              $.ajax({
    14                  url: "{{.Url}}",
    15                  type: 'post',
    16                  dataType: 'text',
    17                  data: {
    18                      'value': $("select.{{.Field}}").val(),
    19                      {{.PassValue}}
    20                      'event': event
    21                  },
    22                  success: function (data) {
    23                      if (typeof (data) === "string") {
    24                          data = JSON.parse(data);
    25                      }
    26                      if (data.code === 0) {
    27                          {{if eq .ActionJS ""}}
    28  
    29                          if (selectObj.length > 0) {
    30                              if (typeof (data.data) === "object") {
    31                                  if (box) {
    32                                      {{.Field}}_updateBoxSelections(selectObj, data.data)
    33                                  } else {
    34                                      if (typeof (selectObj.attr("multiple")) !== "undefined") {
    35                                          selectObj.html("");
    36                                      }
    37                                      selectObj.select2({
    38                                          data: data.data
    39                                      });
    40                                  }
    41                              } else {
    42                                  if (box) {
    43                                      selectObj.val(data.data).select2()
    44                                  } else {
    45  
    46                                  }
    47                              }
    48                          } else {
    49                              $('.{{.ChooseField}}').val(data.data);
    50                          }
    51  
    52                          {{else}}
    53  
    54                          {{.ActionJS}}
    55  
    56                          {{end}}
    57                      } else {
    58                          swal(data.msg, '', 'error');
    59                      }
    60                  },
    61                  error: function () {
    62                      alert('error')
    63                  }
    64              });
    65          };
    66  
    67          if ($("label[for='{{.Field}}']").next().find(".bootstrap-duallistbox-container").length === 0) {
    68              $("select.{{.Field}}").on("select2:select", function (e) {
    69                  let id = '{{.ChooseField}}';
    70                  let selectObj = $("select." + id);
    71                  if (selectObj.length > 0) {
    72                      selectObj.val("").select2();
    73                      selectObj.html('<option value="" selected="selected"></option>')
    74                  }
    75                  {{.Field}}_req(selectObj, false, "select");
    76              });
    77              if (typeof ($("select.{{.Field}}").attr("multiple")) !== "undefined") {
    78                  $("select.{{.Field}}").on("select2:unselect", function (e) {
    79                      let id = '{{.ChooseField}}';
    80                      let selectObj = $("select." + id);
    81                      if (selectObj.length > 0) {
    82                          selectObj.val("").select2();
    83                          selectObj.html('<option value="" selected="selected"></option>')
    84                      }
    85                      {{.Field}}_req(selectObj, false, "unselect");
    86                  })
    87              }
    88          } else {
    89              let {{.Field}}_lastState = $(".{{.Field}}").val();
    90  
    91              $(".{{.Field}}").on('change', function (e) {
    92                  var newState = $(this).val();
    93                  if ($({{.Field}}_lastState).not(newState).get().length > 0) {
    94                      let id = '{{.ChooseField}}';
    95                      {{.Field}}_req($("." + id), true, "unselect");
    96                  }
    97                  if ($(newState).not({{.Field}}_lastState).get().length > 0) {
    98                      let id = '{{.ChooseField}}';
    99                      {{.Field}}_req($("." + id), true, "select");
   100                  }
   101                  {{.Field}}_lastState = newState;
   102              })
   103          }
   104      </script>
   105  {{end}}