2011-04-10 6 views
5

양식이 수정되었는지 여부를보기 위해 내 페이지의 라디오 버튼/체크 박스의 상태 변경을 안정적으로 감지해야합니다. 자, 이것은 완전히 별개의 스크립트입니다. 폼을 제어하는 ​​것은 수정할 수 없습니다. 텍스트 상자, 텍스트 영역 및 선택에 도움이되지만 체크 박스/라디오 버튼 라디오 버튼/체크 박스 상태 변경 감지

  • onclick 이벤트 핸들러 해고되지

    • onchange 이벤트 핸들러 : 지금

      , 나는이 일을 두 가지 방법을 볼 수 있습니다 이는 사용자가 종종 단축키를 사용하여 이러한 요소의 값을 변경하기 때문에 신뢰할 수 없습니다.

    무엇이 여기에 있습니까? 안정적으로 체크 박스가 체크/체크되지 않았 음을 감지하는 방법이 있습니까?

    UPDATE : 너희들은 지적은 변경 이벤트는 정말 W3 스쿨 그것이 text inputs

    그러나, 내 문제는 값 것으로 밝혀졌다만을위한 것입니다 말한다는 사실에도 불구하고, 체크 박스/라디오 버튼에 해고 checkboxes/radiobuttons는 스크립트에서 setAttribute를 통해 설정되며이 경우 이벤트는 시작되지 않습니다.

    이 경우 내가 할 수있는 것이 있습니까?

  • +1

    체크 박스와 라디오 버튼은'onchange' 이벤트를 발생 시키지만 IE는 체크 박스 나 라디오 버튼이 포커스를 잃을 때까지 이벤트를 발생시키지 않습니다. –

    답변

    1

    참조 : http://www.quirksmode.org/dom/events/change.html.

    모든 주요 브라우저가 변경 이벤트를 지원하지만 IE의 구현이 버그라고합니다.

    IE는 확인란이나 라디오가 흐려질 때 이벤트를 시작하고 활성화되지 않은 경우 이벤트를 시작합니다. 이는 사용자가 다른 조치를 취해야하며 체크 박스 및 라디오의 변경 이벤트를 기반으로 일관된 브라우저 간 인터페이스를 금지하는 심각한 버그입니다.

    이 트릭으로 IE의 버그를 극복 할 수 있다고 생각합니다. 그들이 focued했을 때 blur() 요소!

    +0

    이 blur 이벤트를 두 번 실행하지 않습니까? – Alex

    +5

    IE의 동작은 버그가 아니며 W3C HTML 사양에의합니다. 수정 된 사항은 click 이벤트가 상태를 변경하면 시작되므로 라디오 버튼과 체크 박스에 click 이벤트를 사용하는 것입니다. – RobG

    0

    이 좋아, 일부 파고 후, 여기에 내가 알아 낸 것입니다 (jQuery를에 $('input[type=radio]').focus(function(){$(this).blur();}); 같은 것을 사용하거나 순수 자바 스크립트를 사용). Firefox는 Firefox에만 적용되며 Firefox에만 적용됩니다. 이 경우에는 내부 애플리케이션을 다루기 때문에이 정도면 충분합니다.

    1. 설정 사용자 지정 파이어 폭스의 이벤트 핸들러는 각각 체크 박스와 라디오 버튼에 대한 CheckboxStateChange and RadioStateChange :

      그래서, 기본적으로, 하기 위해 안정적으로 파이어 폭스에서 체크 박스/라디오 버튼 상태의 변화를 감지, 두 가지 작업을 수행해야합니다. 사용자가 입력을 변경하거나이 setAttribute을 사용하여 스크립트를 통해 수정 될 때 상태가 스크립트에서 변경 될 때, 그러나, 이러한 이벤트는 이러한 요소 checked 또는 selected 속성을 사용하여, 발사하지 않을 때 이러한 이벤트가 트리거됩니다이다 왜 우리가 필요 ...Object.watch

    표준 onchange 이벤트를 사용하여 checked 재산의

  • 시계 변경은 사용자가 직접 값을 변경할 때 그것은 단지 발사 이후, 좋은하지 않습니다.

    젠장,이 일이 깨진 ...

    사람들이 관심을 갖게되면, 나는 몇 가지 코드를 게시 할 수 있습니다.