我有一个asp.net mvc页面。我有一个文本框,当输入一个值,然后开箱即可执行一个javascript函数,它将对文本框中的值进行四舍五入。这适用于Chrome和IE,但不适用于FireFox。
以下是代码。 setAmount()是应该执行的javascript函数。
<div class="amount-other-input">
<div class="bold-label" style="margin-right:5px;">£</div>
<input id="amountOther" type="number" name="other" onblur="setAmount(this)" class="numbersOnly" maxlength="4">
</div>
我尝试在另一个stackoverflow回答中建议添加一个计时器,如下所示,但是没有用:
document.getElementById('amountOther').addEventListener("blur", function() {
var element = this;
setTimeout(function() {
setAmount(element);
}, 1);
}, true);
答案 0 :(得分:2)
最后我解决了以下问题:
调用方法以关注onchange
function setFocus(sender){ $(发送者).focus(); };
答案 1 :(得分:0)
正如@Hobo Sapiens所提到的,不要在html和事件监听器上添加blur事件。只需直接在html的onblur
事件上调用该函数即可。
这是一个小提琴:http://jsfiddle.net/pyjtL456/2/
另外,你在检查这个版本的firefox是什么版本?
答案 2 :(得分:0)
看完问题后。我建议你采用这种方法。 以下是HTML代码段:
<div class="amount-other-input">
<div class="bold-label" style="margin-right:5px;">£</div>
<input id="amountOther" type="number" name="other" onblur="setAmount(this)" class="numbersOnly" maxlength="4" />
<input id="amountOther2" type="number" name="other" class="numbersOnly" maxlength="4" />
</div>
Javascript Snippet:
<script>
//When using the onblur property with setAmount as the value
function setAmount(element) {
console.log(element.value);
}
//When adding the blur event dynamically
var amountElement = document.getElementById('amountOther2');
amountElement.addEventListener('blur', function(){
setTimeout(setAmount(this), 1);
});
</script>
答案 3 :(得分:0)