1

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 では、最初のテキスト ボックスをクリックしてから 2 番目のテキスト ボックスをクリックすると、(予想どおり) 保存ボタンが有効になります。Firefox ではそうではありません。

setTimeout に対応する行のコメントを外すと、両方で正常に動作します - http://jsfiddle.net/ZLPkk/10/

イベントがどのように機能するかを誤解していますか?これは仕様で許可されているあいまいさですか? それとも、これは Firefox のバグですか? クロム?あるいは、明らかな何かが欠けているのかもしれません。

4

1 に答える 1

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);
于 2013-05-20T22:23:22.377 に答える