Альтернатива событию "onChange" с выпадающим списком Semantic UI? - PullRequest
0 голосов
/ 22 ноября 2018

Это глупый вопрос, но я был на всем сайте Semantic UI вместе с поиском здесь, и я не нашел решения.

Суть в том, что я использовал код нижес семантическим выпадающим списком.Он работает нормально - за исключением того, что у меня есть компонент таблицы, с помощью которого пользователь также может сделать выбор (который вызывает функцию) - и когда они это делают, я обновляю раскрывающийся список Семантика, чтобы отразить текущий выбор.,,и затем срабатывает событие onChange - поэтому функция запускается дважды, когда в этом нет необходимости.

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


$(function () {
    $('#productStates').dropdown({
        allowAdditions: true,
        allowReselection: true,
        placeholder: "Select State",
        onChange: function (value, text) {
            if (projectData == undefined) return;                
            loadStateByID(value)
        }
    })
});

1 Ответ

0 голосов
/ 22 ноября 2018

Хорошо - решил это.Желаю, чтобы Семантические документы были более понятными при обработке событий.

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

$('#productStates').dropdown('set selected', activeStateID);

Обработчик событий onChange захватил все изменения, и поэтому событие «load» сработало бы дважды.При использовании action событие запускается только для действия пользователя, а не для установки раскрывающегося состояния с помощью кода.

$('#productStates').dropdown({
        allowAdditions: true,
        allowReselection: true,
        placeholder: "Select State",
        action: function (value, text) {
            if (projectData == undefined) return;
            $(this).dropdown('set selected', value);
            loadStateByID(text)
        }
    })
...