IE9点击订单

时间:2012-04-02 18:27:11

标签: javascript jquery telerik internet-explorer-9

此代码: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

$(document).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 :(得分:0)

为什么不能只调用输入项的.change()事件而不是执行focus()。blur()?只要Telerik认为这是格式化的有效事件,它就可以正常使用。

答案 1 :(得分:0)

我用setTimeout

修复了此问题
    setTimeout(function () {
        $('#btn').addClass("inactif");
        $('#btn').attr('disabled', true);
    }, 300);