2011-08-30 4 views
1

IE8의 자바 스크립트 문제 (기쁨)가 있습니다.프로그래밍 방식으로 텍스트 상자 값을 변경하면 IE8 실행 변경 이벤트

기본적으로 특정 텍스트 상자의 음수 항목을 양수 값으로 변환해야합니다. 텍스트 상자의 초점이 손실 될 때 나는 물건을 나중에

$('input[type="text"]').live('change', function() { 
    var number = $(this).val(); 
    if (number < 0) 
    { 
     $(this).val(-number); 
    } 
}); 

을 : 나는 이런 식으로 할 것이라고 파악

텍스트 상자의 값이을 변경 IE8 와 불행하게도
$('input[type="text"]').live('blur', function() { 
    // do stuff with textbox's _positive_ number 
}) 

(즉, 텍스트 상자에 -23을 입력하면 변경 이벤트가 두 번 발생하고 blur 이벤트가 전혀 발생하지 않습니다.

다른 최신 브라우저는이를 수행하지 않습니다.

  1. 변경 이벤트가 두 번 발생하는 이유는 무엇입니까?
  2. 왜 블러 이벤트가 발생하지 않습니까?
  3. 어떻게 수정합니까?

이 일어나는 보려면 여기로 이동 : 다른 값으로 폼 요소의 value 속성을 설정하면 그래서이 줄을 IE8에서,

$(this).val(-number); 

트리거를 change 이벤트가 발생 http://jsfiddle.net/ajbeaven/AwZKM/

+0

IE에서 jsfiddle이 제대로 작동하지 않지만, 변경 이벤트가 한 번만 발생하는 것으로 보입니다. UPD : 죄송합니다, 음수를 입력하는 걸 잊었습니다. * – unclenorton

답변

2

을 변경 이벤트. 내가 뭔가 변화 및 흐림 이벤트의이 .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'); 
}) 

그것은 작동에 코드를 변경 한 경우, 흐림 이벤트가 발사하지에 발생하는 또 다른 문제. 미안하지만 나는 해결책을 많이 안다. 누군가 이것을 읽은 후에 아이디어를 생각 해낼 수도있다.

+0

사실, 이벤트 중 하나 *가 '라이브'로 묶여 있어도 작동합니다. – unclenorton

관련 문제