我有一些IE8 javascript问题(欢乐)。
基本上,我需要将某个文本框中的任何负数条目转换为正值。我想我会这样做:
$('input[type="text"]').live('change', function () {
var number = $(this).val();
if (number < 0)
{
$(this).val(-number);
}
});
稍后我会在文本框的焦点丢失时执行操作:
$('input[type="text"]').live('blur', function () {
// do stuff with textbox's _positive_ number
})
不幸的是,当文本框的值发生变化时IE8 (即你在文本框中输入-23),更改事件会被触发两次,并且根本不会触发blur事件。< / p>
其他现代浏览器不这样做。
到这里来看看这件事:http://jsfiddle.net/ajbeaven/AwZKM/
答案 0 :(得分:2)
当您将表单元素的value
属性设置为其他值时,{8}中的change
事件将触发,因此该行
$(this).val(-number);
再次触发更改事件。如果我将代码更改为
,则模糊事件未触发的另一个问题是$('input[type="text"]').change( function () {
var number = $(this).val();
if (number < 0)
{
$(this).val(-number);
}
alert('change');
});
$('input[type="text"]').blur(function () {
alert('blur');
})
它有效,这让我觉得当变化和模糊事件与.live
绑定时会发生一些事情。对不起,我知道的解决方案不多,也许有人在看完这篇文章之后可以提出一些想法。