【发布时间】:2012-04-30 09:25:32
【问题描述】:
我正在使用 jQuery 来更改页面元素,并且代码似乎正在运行(成功),但页面实际上并没有立即更新。 Chrome 中的一切都很稳定,但 IE9 很奇怪。
JavaScript:
$(document).ready(function() {
$('body').on('change', '.Hours', function () {
var hoursElement = this;
this.value = Math.ceil(this.value * 4) / 4;
$.post("/Log/UpdateWorkItemHours", {
//valid arguments
}, function (hours) {
hoursElement.value = hours;
updateSum();
});
});
});
function updateSum() {
var sum = 0;
$('.Hours').each(function () {
sum += parseFloat($(this).val());
});
$('#sum').text("Total Hours: " + sum);
alert(sum);
}
HTML:
<input type="text" class="numeric Hours" value="4" />
<input type="text" class="numeric Hours" value="4" />
<input type="text" class="numeric Hours" value="21" />
<span class="numeric" id="sum">Total Hours: 0</span>
我的警报发生在(在代码中)#sum 的内容应该更改之后,并且它显示正确的数字,但是,直到我在页面周围随机单击或使用选项卡更改焦点后页面才会更新次。此外,警报仅用于调试;这是在我添加之前发生的。
代码顺序: 1.算出总和 2.更新页面 3. 弹出警报
执行顺序: 1.算出总和 2.弹出警报 3.等到用户随机点击东西 4. 更新页面
有什么想法吗?
编辑:添加了 HTML 和调用该函数的事件。
【问题讨论】:
-
这个函数什么时候被调用?与之交互的页面的 HTML 是什么?
-
在没有警报的情况下是否可以工作? IE 真的不喜欢做警报
-
@thantos 来自问题:“另外,警报仅用于调试;这是在我添加它之前发生的。”
-
IE什么时候“不喜欢做警报”了?
-
@AnthonyGrist,我更新了它以包含 html 和调用函数的位置。
标签: javascript jquery html google-chrome internet-explorer-9