2011-08-30 123 views
1

我有一些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),更改事件被觸發兩次,模糊事件根本不被觸發。

其他現代瀏覽器不這樣做。

  1. 爲什麼更改事件觸發兩次?
  2. 爲什麼模糊事件不會觸發?
  3. 我該如何解決?

去這裏看到這種情況出現:http://jsfiddle.net/ajbeaven/AwZKM/

+0

這是一個可恥的jsfiddle在IE中無法正常工作,但我看到只有一個更改事件在那裏觸發。 UPD:對不起,我忘記輸入*消極* – unclenorton

回答

2

當您在表單元素的value屬性設置爲不同的值,則change事件觸發在IE8所以這行

$(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必然要去。對不起,我對解決方案瞭解得不多,也許有人在閱讀本文後能想出一些想法。

+0

事實上,即使其中一個事件與'live'綁定, – unclenorton

相關問題