2012-04-15 4 views
3

나는이 질문을 여기에 넣는 것조차도 어리둥절 해하지만 아직 해결책을 찾지 못했다.OnChange 이벤트가 너무 빨리 드롭 다운/선택 입력에서 발생합니까?

아마도 이것은 onchange 이벤트가 작동하는 방식이지만, 너무 빨리 실행되는 것처럼 보일 수 있습니다 (또는 최종 선택시 다시 실행되어야 함). 내 화면의 일부를 새로 고치는 데 사용하는 선택/드롭 다운이 있지만 Chrome 및 IE9에서 사용자가 시작하자마자 onchange 이벤트가 호출되는 것을 발견했습니다 (마우스 선택과 함께 사용하면 좋음) - 나는 입력이 끝나지 않았더라도 새로운 선택이 만들어지기 때문에 이것이 합리적이라고 생각한다. 어쨌든 화면은 업데이트되지만 드롭 다운에서 사용자의 최종 선택 데이터는 표시되지 않습니다 (처음 히트/변경시 발생하는 것처럼 보이지만 사용자가 타이핑을 중지하고 최종 선택이 이루어지면 다시 실행되지 않습니다) .

나는 그것을 onblur로 바꿨지 만, 사용자가 선택을 마친 후에야 움직이기 때문에 onblur보다 빨리 발생하는 해결책을 찾고 싶지만 사용자의 최종 선택은 만든.

이는 MVC의 progject에서 aspx 페이지에 다음 JS가 전화를 작동

<asp:DropDownList ID="employeeDropdown" runat="server" onchange="RefreshCalendarData()" /> 

이것은 :

function RefreshCalendarData() { 
    // code omitted 
    Scheduler.Refresh(); 
} 

은 JS 또는 jQuery를 사용하여 좋은 솔루션/해결 방법이 있습니까?

+0

ASP.NET _use_ jQuery가 아닌가요? 또한, 나는 (크롬에서 적어도) 사용자의 마지막 드롭 다운 선택을 위해'change' 이벤트가 발생하지 않는이 문제를 보지 못합니다 : http://jsfiddle.net/mattball/Mx7TN/ –

+0

@ MДΓΓLLLLLL - 시도했습니다. 이 jquery뿐만 아니라. 나는 아직도 그 문제를 경험했다. 귀하의 예와 함께 문제를 반복 할 수 없으므로 올바른 것으로 보입니다. 그러나 목록에는 약 150 개의 항목이 포함되어 있습니다. 그러나 동의하셔야합니다. 그러면 최종 선택이 이루어지면 시작해야합니다. 두 번째 시간이 시작되지만 새로 고침 프로세스가 오래 걸리므로 다시 호출되지 않습니다 (또는 여전히 실행 중이므로 호출이 무시됩니다). 도움을 주셔서 감사합니다. – Josh

+0

아마도 가장 좋은 방법은 select 메뉴에 onchange를 사용하지 않고 select 옆에 작은 'Go'버튼을 두는 것입니다. IE는 마우스를 사용하지 않는 사용자 일 수있는 화살표 키를 사용하여 선택 탐색을 위해 onchange를 트리거합니다. – Gareth

답변

-1

예 onChange 이벤트는 정상적으로 작동합니다. 할 수있는 일은 창에 타이머를 연결하고 onChange를 사용하는 대신 필드가 수정되었는지 확인하는 것입니다.

그래서 사용자가 양식을 흐리게 표시하면 true로, 사용자가 마지막 선택을했는지 확인하기 위해 타이머로 업데이트하는 전역 변수를 만들 수 있습니다.

은 예상 한 것과 더 가깝습니다.

+0

아니요, 타이머가있는 폴링은 여기에서 원격으로 필요하지 않습니다. –

1

ASP.NET MVC 프로젝트에서 서버 컨트롤을 사용할 수 있습니다 (예외는 거의 없음). 입력시 IE/Chrome에서 DDL의 작업이 올바르게 수행됩니다. - 및 My blog Cascading DropDownList in ASP.Net MVCWorking with the DropDownList Box and jQuery 캐스 캐이 딩 DDL 샘플을 가지고 놀아보십시오.

+0

이것은 도움이되었을 지 모르지만이 페이지는 우리가 필요로하는 타사 통제 때문에 aspx 페이지로 남아 있어야했습니다. 프로젝트는 MVC이지만이 페이지는 아닙니다. 감사. – Josh

관련 문제