Javascript IE8以编程方式更改文本框值时触发更改事件
我有一些IE8 javascript问题(joy) 基本上,我需要将某个文本框中的任何负数项转换为正值。我想我会这样做:Javascript IE8以编程方式更改文本框值时触发更改事件,javascript,jquery,internet-explorer-8,Javascript,Jquery,Internet Explorer 8,我有一些IE8 javascript问题(joy) 基本上,我需要将某个文本框中的任何负数项转换为正值。我想我会这样做: $('input[type="text"]').live('change', function () { var number = $(this).val(); if (number < 0) { $(this).val(-number); } }); 不幸的是,在IE8中,当文本框的值更改时(即在文本框中输入-23),
$('input[type="text"]').live('change', function () {
var number = $(this).val();
if (number < 0)
{
$(this).val(-number);
}
});
不幸的是,在IE8中,当文本框的值更改时(即在文本框中输入-23),更改事件会触发两次,而模糊事件根本不会触发
其他现代浏览器不这样做
转到此处查看发生的情况:当您将表单元素的
值
属性设置为不同的值时,IE8中将触发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');
})
$('input[type=“text”])。更改(函数(){
var number=$(this.val();
如果(数字<0)
{
$(this.val(-number);
}
警报(“变更”);
});
$('input[type=“text”]”)。模糊(函数(){
警报(“模糊”);
})
它起作用了,这让我觉得当更改和模糊事件与
.live
绑定时发生了一些事情。很抱歉,我知道的解决方案不多,也许有人读了这篇文章后会想出一些想法。很遗憾JSFIDLE在IE中不能正常工作,但我只看到一个更改事件在那里触发。UPD:对不起,我忘了输入negative。事实上,即使其中一个事件与live
$('input[type="text"]').change( function () {
var number = $(this).val();
if (number < 0)
{
$(this).val(-number);
}
alert('change');
});
$('input[type="text"]').blur(function () {
alert('blur');
})