IE9 порядок кликов - PullRequest
       9

IE9 порядок кликов

0 голосов
/ 02 апреля 2012

Этот код: http://jsfiddle.net/bYtTG/1/

Работает так, как я хочу в FF, Chrome и Opera, но не в IE: когда вы нажимаете «Расчет», все они отключают кнопку, кроме IE.

Кажется, что IE не любит, когда я фокусирую и размываю ввод (я делаю это для форматирования текстового поля, доступного только для чтения, в формат валюты с telerik).

Есть идеи, как это исправить? Мне не нравится onChange (плюс, элементы управления Telerik позволяют вам использовать стрелки вверх / вниз на клавиатуре для изменения значения ввода, которое не вызывает событие onChange).

HTML

<div>
    <input id="a" value="2" /><br />
    <input id="b" value="3" /><br />
    <input id="c" value="" class="inactif" /><br />
    <input id="d" value="5" /><br />
    <input id="e" value="7" class="inactif" /><br />
    <input id="total"><br /><br />
</div>
<input type="button" id="btn" value="calculer" />

JS

$ (документ) .ready (function () {

    $('div input').focus(function () {
        $('#btn').removeClass("inactif");
        $('#btn').attr('disabled', false);
    });


    $('#btn').click(function () {
        //L1-L2=L3
        Calculer('a', '+', 'b', 'c');
        Calculer('c', '-', 'd', 'total');
        Calculer('d', '+', 'e', 'total');

        //those line seems to be "ignored"
        $('#btn').delay(500).addClass("inactif");
        $('#btn').delay(200).attr('disabled', true);
    });

    function Calculer(idFacteur1, operande, idFacteur2, idResultat) {
        var val1 = parseInt($('#' + idFacteur1).val());
        var val2 = parseInt($('#' + idFacteur2).val());
        var res = 0;
        if (operande == "+") {
            res = val1 + val2;
        } else {
            res = val1 - val2;
        }
        $('#' + idResultat).val(res);
        $('#' + idResultat).focus().blur();
    }

});

Ответы [ 2 ]

0 голосов
/ 14 июня 2012

Я исправил это с помощью setTimeout

    setTimeout(function () {
        $('#btn').addClass("inactif");
        $('#btn').attr('disabled', true);
    }, 300);
0 голосов
/ 02 апреля 2012

Почему вы не можете просто вызвать событие .change () элемента ввода вместо выполнения focus (). Blur ()?До тех пор, пока Telerik признает это допустимым событием для форматирования, оно будет работать для вас нормально.

...