当编程改变文本框的值IE8射击更改事件

我有一些JavaScript的IE8的问题(喜悦)。

基本上,我需要任何负数项在某个文本转换为正值。 我想我会做这样的:

$('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),change事件被触发两次,模糊事件不触发的。

其他现代的浏览器不这样做。

  1. 为什么更改事件解雇了两次?
  2. 为什么模糊事件不触发?
  3. 如何解决呢?

去这里看到这种情况出现:http://jsfiddle.net/ajbeaven/AwZKM/

--------------解决方案-------------

当您将设定value的表单元素的属性不同的值,该change在IE8事件触发所以这行

$(this).val(-number);

再次触发change事件。 您正在使用模糊事件不触发有,如果我的代码更改为另一个问题

$('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 。 对不起,我不知道多大的解决方案,也许有人能想出看完这个一些想法。

分类:JavaScript的 时间:2015-03-15 人气:0
分享到:

相关文章

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 0.950 (s). 10 q(s)