2009-07-08 8 views
2

에서 onChange를 중지하는 방법 onChange = "..."이 지정되었습니다 ... coz 선택 변경 후 다른 양식 값을 변경하고 싶습니다.내 선택 상자 중 하나에서 자바 스크립트

그러나 ... 동일한 페이지에서 일부 유선 경우 값을 수동으로 설정해야합니다 ..그래서 선택 combox의 값을 설정하는 데 일부 자바 스크립트를 사용해야하지만이 경우에, 나는 돈` onChange 이벤트가 해고되기를 원합니다 ...

어떻게 그걸 둘러 볼 수 있습니까 ???

저는 실제로 dijit.form.comboBox를 사용하고 있습니다. 일반 HTML 양식 comboBox의 경우 문제가되지 않습니다. dijit comboBox 만 사용하고 다른 값으로 설정하려고하면 dojo가 onChange를 트리거합니다.

답변

1

아무 것도 할 필요가 없습니다. Javascript로 값을 설정해도 onchange 이벤트 핸들러는 실행되지 않습니다.

+0

예 .u가 맞습니다. 그냥 dijit.form.comboBox를 사용하고 있다는 사실을 잊어 버렸습니다. 일반적인 HTML form comboBox의 경우 문제가되지 않습니다. 오직 내가 dijit comboBox를 사용하고 값을 다른 값으로 설정하려고 할 때 dojo가 onChange를 트리거합니다. – jojo

1

일반적으로 JavaScript로 값을 설정해도 onchange가 실행되지 않습니다. 실행중인 이상한 브라우저를 다루는 경우 onChange (element.onchange = null)를 제거하고 값을 변경 한 다음 나중에 다시 추가하십시오 (element.onchange = functionname).

+0

실제로 dijit.form.comboBox를 사용하고 있음을 언급하는 것을 잊어 버렸습니다. 일반적인 HTML form comboBox의 경우 문제가되지 않습니다. 오직 내가 dijit comboBox를 사용하고 값을 다른 값으로 설정하려고 할 때 dojo가 onChange를 트리거합니다. 빠른 대답 주셔서 감사합니다 – jojo

+0

이벤트가 attachHandler/addEventListener와 함께 추가 된 경우이 작업이 수행되지 않습니다. –

0

참고로이 답변은 완전히 정확하지 않습니다. 단순히 값을 설정해도 onChange 이벤트는 발생하지 않지만 컨트롤이 포커스를 잃는 즉시 변경 사항이 감지되고 onChange가 발생한다는 것은 사실입니다.

그래서 onChange를 지연시키는 것은 onChange를 방지하는 것과 실제로 같지 않습니다 - 내가해야 할 일입니다!

나는 일시적으로 이벤트를 제거하고, 필드를 흐리게 처리하고 다시 초점을 맞춘 다음 이벤트를 복원하지만 이것은 추한 해킹입니다. 그것은 jQuery와 같은 역동적 인 추가 이벤트에 의해 복잡합니다. 그래서 내가 정말로 원하는 것은 '초점 가치'를 '새로운 가치'로 설정하는 것이지만, 이것을 찾을 수는 없습니다. defaultValue를 설정할 수도 있지만 올바른 form.reset()을 막을 수 있습니다.

9

Dijit을 사용하는 경우 위젯이 onChange 이벤트를 발생시키지 못하게하는 set() 메소드 끝에 false 플래그를 추가로 전달할 수 있습니다. 예를 들어

:

dijit.byId(myComboBox).set("value","Choose an option...",false); 
+0

api 1.6에서 작동하지 않습니다. cuz 세 번째 매개 변수를 사용할 수 없습니다. – AsadYarKhan

관련 문제