Метод jQuery Change () не запускается в раскрывающемся списке в Jquery DataTables - PullRequest
0 голосов
/ 10 мая 2019

У меня есть столбец в DataTable в Jquery, где в каждой строке ячейка, соответствующая столбцу, имеет выпадающий список внутри него.

Я отображаю этот раскрывающийся список, определяя его в параметрах columnDefs следующим образом:

$(document).ready(function() {
   $('#example').DataTable( 
"columnDefs":[
          {
              "render": function(d,t,r){
                  var $select = $("<select></select>", {
                      "id": r[1]+"start",
                        "value": d,
                        "class": r[1]
                    });
                  $.each(times, function(k,v){
                      var $option = $("<option></option>", {
                          "text": v,
                            "value": v
                        });
                        if(d === v){
                          $option.attr("selected", "selected")
                        }
                      $select.append($option);
                    });
                    return $select.prop("outerHTML");
                },
                "targets": 2
            }
        ]
)})

Переменная данных times в операторе $.each - это просто переменная, которую я загружаю из localStorage, которая состоит из дат.

Поскольку я хочу дождаться загрузки данных в DataTables, прежде чем выбрать элемент, я добавляю опцию с именем initComplete, и в нее я добавляю метод change(), а также метод для сохранения изменения значение в localStorage:

"initComplete": function(settings, json) {
$(function() {
    $('.SomeDate').change(function() {
        localStorage.setItem('storeddata', this.value);
    });
    if(localStorage.getItem('storeddata')){
        $('.SomeDate').val(localStorage.getItem('storeddata'));
    }
});
        }

Выпадающий тег <select>, сгенерированный во внешнем интерфейсе, выглядит так:

<select id="SomeDatestart" value="SomeValue" class="SomeDate"></select>

По какой-то причине, когда я выбираю элемент в раскрывающемся списке, я не получаю никаких результатов, сохраненных в localStorage.

Я мог бы заставить селектор выбрать тег выбора id вместо тега выбора class, но даже пытаясь это сделать, я не смог вызвать событие change().

Однако я попытался использовать метод change(), описанный выше, изолировать его от функции, в которой есть данные, и создать фиктивный выпадающий список с тем же тегом select и образцами тегов <option>, и после этого я смог успешно запустить метод change() и аналогичным образом сохранить значение в localStorage.

Я что-то упустил? Возможно, есть другой способ вызова метода change() для выборок в DataTables?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...