Невозможно вызвать изменение после изменения значения в поле выбора - PullRequest
0 голосов
/ 18 сентября 2018

Я пытаюсь изменить значение в раскрывающемся списке, а затем вызвать событие, которое происходит при изменении значения.Код довольно прост и выглядит так:

    zScalerEndPointList.on("change", function(){
        // Change the value
        $("select#phase1_type").val("string:ddns");
        // Trigger the change
        $("select#phase1_type").trigger("change");
    })

Значение успешно изменено, но событие не инициировано.Если регистрировать объект с помощью jQuery, я вижу, что прикрепленное событие изменения равно нулю.Однако, если выполнить следующую команду вручную в окне консоли Javascript, это сработает:

$("select#phase1_type").trigger("change");

Есть идеи, что может быть не так?Я не являюсь владельцем приложения, это Javascript, выполненный через TamperMonkey.

Благодарен за любой ввод.

/ Patrik

Ответы [ 2 ]

0 голосов
/ 19 сентября 2018

Оказывается, это дублирующий вопрос.Это я спрашивал раньше.Немного неловко:)

Tampermonkey: событие триггера не работает для элемента

Решено с помощью следующей функции:

function triggerEvent(e, s){
    "use strict";
    var event = document.createEvent('HTMLEvents');
    event.initEvent(e, true, true);

    try {
        document.querySelector(s).dispatchEvent(event);
    } catch(err){
        console.log("Unable to fire event " + e + " on selector " + s);
        console.log(err);
    }
}

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

/ Patrik

0 голосов
/ 18 сентября 2018

Я не уверен, что получил вас, но вы можете использовать часы для списка спада или что-то похожее на это

 $scope.$watch(function () { return self.filter; }, function (newValue, oldValue) {
                        if (newFilter != oldFilter) {
                         // call trigger   
                        }
                    }, true);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...