簡體   English   中英

IE9點擊順序

[英]IE9 click order

這段代碼: 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();
    }

});

我用setTimeout修復了這個問題

    setTimeout(function () {
        $('#btn').addClass("inactif");
        $('#btn').attr('disabled', true);
    }, 300);

為什么不能僅調用輸入項的.change()事件而不是執行focus()。blur()? 只要Telerik知道這是格式化的有效事件,它將對您很好。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM