2012-03-21 2 views
1

사용자가 마우스를 사용하거나 Enter 키를 눌러 항목을 선택하기 전에 SELECT 요소의 변경 사항을 추적하는 방법은 무엇입니까?SELECT onChange 이벤트

키보드를 사용하여 목록을 탐색하는 사용자를 추적 할 수있는 keyUp 이벤트를 수신 할 수 있습니다. 그러나 더 일반적인 접근법이 있는데, 이것은 "prefinal"목록의 추적을 허용합니까?

+0

당신은 존재하는 자바 스크립트 변수 로컬에서 이전 값을 저장할 수 있습니다 :

는 우리가 이전 값을 추적 할 수 있습니다 사용의 예입니다. – slash197

답변

0

자바 스크립트는 'onbeforechange'이벤트를 지원합니다.이 이벤트는 아마도 트릭을 수행 할 수 있지만, 브라우저 전반에서 얼마나 광범위하게 구현되었는지는 알 수 없습니까? 충분히 넓게 지원된다면 이전 값을 변경하기 전에 저장하십시오. 실패하면 숨겨진 필드 나 JS 변수에 원래 값을 저장하십시오.

+1

참조가 필요합니다. Opera, IE, Chrome, Safari, Firefox는이 이벤트를 지원하지 않습니다 ... –

+0

IE (최소 8+ 이상)가 지원하지만, IE 환경에서는 사용하지 않았습니다. 따라서 광범위하게 구현할 필요는 없습니다. . – Purpletoucan

+0

IE6-9, FF 11, Chrome 17, Opera 11.61, Safari 5.1.2에서 이것을 테스트했지만, 거기에'onbeforechange' 이벤트는 존재하지 않습니다 ** (테스트 된'.onbeforechange = ..','addEventListener '및'.attachEvent'). –

0

선택 항목 위로 마우스를 움직일 때 발생하는 이벤트가 없습니다.

당신이 말한 것처럼 마우스 움직임을 추적 할 수 있습니다. 그러나 다른 브라우저가 목록을 다르게 렌더링하므로 이는 어려운 작업입니다.

는하지만 기본은

0

를 선택 사용하지 않고 선택 박스를 직접 만들 수 있습니다이 예제와 같이 함수를 작성해야한다 : -

function example(){ 
jQuery('select#service_billing_state').change(function() { 
//your code here 
}); 
} 

을 당신이에 onblur, onchange를이 함수를 호출해야 onkey, onfocus ...

2

나는 항상 이것을 위해 focus click 청취자를 사용합니다.

$('select').bind('focus click',function(){ 
//IMACHANGINGMYOPTION!!!!!!!!!! 
    //var val=$(this).val(); 
}); 

은 위의 변화에 ​​대한 이벤트 전에 트리거해야합니다

$('select').change(function(){ 
//The option has been changed. 
}); 

설명 : 사용자가 선택 초점을 맞추고 때마다, 우리는 선택한 항목의 값을받을 수 있나요, 우리는 전에 조작 할 수 있습니다 onchange 이벤트가 발생합니다. click 청취자는 select가 이미 집중된 경우에 추가되며 사용자 은 실제로 옵션을 선택하고 변경을 트리거하기 전에을 클릭하여 확장합니다. 페이지를 다시로드 할 때까지

http://jsfiddle.net/SUKqS/8/

관련 문제