我正在尝试在下拉框中更改值,然后触发在值更改时发生的事件。代码很简单,看起来像这样:
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
答案 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