Этот код: 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();
}
});