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中的错误?铬?或许我错过了一些明显的东西。
答案 0 :(得分:0)
尝试:
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);