[英]IE9 click order
这段代码: http : //jsfiddle.net/bYtTG/1/
可以在FF,chrome和Opera中按我想要的方式工作,但不支持IE:当您单击“计算器”时,除了IE,它们都禁用了该按钮。
似乎IE不喜欢我关注+模糊输入(我这样做是为了使用Telerik将某些只读文本框格式化为货币格式)。
关于如何解决此问题的任何想法? 我不喜欢onChange(此外,Telerik控件允许您使用键盘的向上/向下箭头更改输入值,但不会触发onChange事件)。
<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" />
$(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.