在选择框中更改值后无法触发更改

时间:2018-09-18 13:21:49

标签: javascript jquery events triggers

我正在尝试在下拉框中更改值,然后触发在值更改时发生的事件。代码很简单,看起来像这样:

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

已成功更改值,但未触发事件。如果使用jQuery记录对象,则可以看到附加的change事件为null。但是,如果在Javascript控制台窗口中手动运行以下命令,它将起作用:

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

关于什么可能是错误的任何想法?我不拥有该应用程序,这是通过TamperMonkey执行的Javascript。

感谢任何输入。

/ Patrik

2 个答案:

答案 0 :(得分:1)

我不确定我是否能找到你,但你可以用手表来查看dorpdown列表或类似的内容

 $scope.$watch(function () { return self.filter; }, function (newValue, oldValue) {
                        if (newFilter != oldFilter) {
                         // call trigger   
                        }
                    }, true);

答案 1 :(得分:0)

原来这是一个重复的问题。我之前问过。有点尴尬:)

Tampermonkey: Trigger event does not work for element

使用以下功能解决了该问题:

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);
    }
}

好像两个Web应用程序都在使用某种已转换的框架,通过删除元素并将其重新添加到DOM,这使我的生活变得艰难。希望这也会对其他人有所帮助。

/ Patrik