繁体   English   中英

Javascript-无法在Firefox中手动触发事件

[英]Javascript - Can't manually fire event in Firefox

Chrome 26.0.1410.64和Firefox 21.0之间似乎不一致

考虑http://jsfiddle.net/ZLPkk/9/

<div id="settings">
    <div><input id="override-1"></div>
    <div><input id="override-2"></div>
    <br>
    <input type="button" value="Save" id="save" disabled="disabled">
</div>

var save = document.getElementById('save');
var settings = document.getElementById('settings');
var value = document.getElementById('override-1');
var value2 = document.getElementById('override-2');

settings.addEventListener('change', function () {
    save.disabled = false;
}, false);

value.addEventListener('click', function () {
    value.disabled = true;
    value2.addEventListener('click', function () {
        value.value = 'wasd';
        value.disabled = false;
        var change = new CustomEvent('change', {
            bubbles: true,
            cancelable: true
        });
        //setTimeout(function () {
        value.dispatchEvent(change);
        //}, 1000);
    }, false);
}, false);

在Chrome中,单击第一个文本框,然后单击第二个文本框以启用“保存”按钮(如预期)。 在Firefox中则不是。

如果取消注释与setTimeout对应的行,则在这两个行上都可以正常工作-http: //jsfiddle.net/ZLPkk/10/

我是否误解了事件的工作方式,这是规范所允许的歧义? 还是这是Firefox中的错误? 铬? 也许我缺少明显的东西。

尝试:

value.addEventListener('click', function () {
    value.disabled = true;
    value2.addEventListener('click', function () {
        value.value = 'wasd';
        value.disabled = false;
        var change = new CustomEvent('change', {
            bubbles: true,
            cancelable: true
        });
        settings.dispatchEvent(change);
    }, false);
}, false);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM