【发布时间】:2015-09-15 22:45:59
【问题描述】:
我一直在努力尝试在 Mozilla Firefox 中使用 java 脚本触发 onchange 侦听器。我在 Stack Overflow 上发现了很多关于此的帖子,但似乎没有任何东西适用于我的独特案例。
我使用这个有用的帖子 (JavaScript OnChange Listener position in HTML markup) 从 onchange 事件中创建了这个带有 onchange 侦听器的 HTML。这是我的代码:
<HTML>
<head>
<script type="text/javascript">
window.onload= function () {
if(window.addEventListener) {
document.getElementsByClassName('search-box')[0].addEventListener('change', loadXMLDoc, false);
} else if (window.attachEvent){
document.getElementsByClassName('search-box')[0].attachEvent("onchange", loadXMLDoc);
}
function loadXMLDoc(){
alert('It worked');
}
}
function addTextCallListener() {
var searchBox = document.getElementsByClassName("search-box")[0];
searchBox.value = "Hello";
}
</script>
</head>
<BODY>
<input type="text" class="search-box" placeholder="Player Search">
<br \>
<button type="button" onclick="addTextCallListener()">Click Me!</button>
</BODY>
</HTML>
我还将它保存为这个 jsfiddle(出于某种原因,我必须将它全部保存在一起才能工作,我无法将它分解为 js 和 html)。
https://jsfiddle.net/josephfedor42/crogL0zd/1/
如果你玩这个 jsfiddle,你会看到输入文本并按下回车键会触发监听器,并且会出现带有“It working”消息的弹出窗口。
但是如果按钮“点击我!”按下它只会更改文本框的值,并且不会调用 onchange 侦听器。
我意识到我可以很容易地向这个按钮添加一个 onchange 事件。但是我想通过在我的addTextCallListener() 函数中以编程方式/表面上使用javascript来触发侦听器。
我尝试过简单的东西,比如打电话
searchBox.onchange();
searchBox.focus();
searchBox.click();
并结合这些来添加和删除焦点。但这似乎不起作用。我发现了很多关于触发 onchange 事件的帖子,但在 Firefox 中没有任何效果。
任何帮助将不胜感激。
感谢您提供可能重复问题的链接。我之前检查过那个链接。
但我又试了一次。我从他们俩那里保存了 jsfiddle,但都没有工作。
我对 Dorian 回答的实现 https://jsfiddle.net/josephfedor42/zaakd3dj/
我对 Alsciende 答案的实现 https://jsfiddle.net/josephfedor42/xhs6L6u2/
【问题讨论】:
-
另外,我正在寻找仅 JavaScript 的答案。再次感谢。
-
所以您只想手动触发事件?
-
我想知道您的问题是否不能精简为“为什么在 Firefox 中设置
input.value不会触发change事件?”带有一个小示例代码,但我也不确定它是否是您想要的,所以我不会为您进行编辑,但请...尝试澄清一下。 -
我对它为什么不触发更改事件并不感兴趣。我想创建事件,以便代码执行我想要的操作。
标签: javascript html firefox