2009-05-12 5 views
8

폼 요소와 팝업 창 (window.open에 의해 열림)이있는 웹 페이지가 있습니다.입력 요소가 팝업 창에서 JavaScript로 변경되었을 때 "onChange"이벤트 발생

둘 다 jQuery를 사용할 수 있습니다.

팝업 창에는 오프너 창에서 양식 요소를 변경할 수있는 자바 스크립트가 있습니다. 그걸로 완벽하게 작동합니다 ...

$(opener.document.formelement).val(vals[0]); 

그러나이를 통해 onChange 이벤트가 실행되지 않습니다. 그것은 다른 일부 페이지 요소에 의해 요구 될 것입니다. 그래서 나는 onChange 이벤트를 직접 해보려고했다.

$(opener.document.formelement).change(); 

그러나 그것은 아무 것도하지 않는다.

힌트가 있습니까? 나는 다른 페이지 요소의 아키텍처로 인해 onChange 이벤트가 발생하도록 확실히해야합니다.

이 질문은 Call Javascript onchange event by programatically changing textbox value과 유사하지만 해당 질문의 제안 된 해결책이 저에게 효과적이지 않습니다. 팝업 때문일 수도 있습니다.

답변

10

아마 당신을 해치고있는 교차 창 ... 대신 호출하는 오프너 내부에서 기능을 만들어보십시오. 도움이 될까요? 개막전에서

: 팝업에서

window.changeMyElement = function(value) { 
    $(formelement).val(value).change(); 
} 

:

opener.changeMyElement(value); 
+0

감사합니다. 그것은 완벽하게 작동했습니다! – BlaM

+2

개막식. $ ('...') .val (newval) .change(); – Tracker1

2

이 라인은 작동하도록되어 :

$(opener.document.formelement).change(); 

JQuery와 documentation에 따르면,이 라인은 각각의 일치하는 요소의 변경 이벤트를 트리거합니다.

효과가 없다면 어딘가에 문제가 생길 수 있습니다. 양식 요소를 손으로 변경하여 onchange 이벤트를 트리거 할 수 있습니까?

+0

Y :

window.opener.document.getElementById('controlname').fireEvent('onchange'); 

아니면 맥락에서

네, 할 수 있어요. 완벽하게 작동합니다 (일반적으로 숨겨진 요소 여야 함). 그러나 보안상의 이유로 팝업에서 "오프너"에서 JavaScript를 실행하는 것이 금지되어 있다고 의심됩니다. 이벤트를 실행하면 JavaScript가 실행됩니다. – BlaM

0

또한 수행 할 수 있습니다

$(opener.document.formelement).fireEvent('onchange'); 
+1

이것은 IE에서만 유용하며 9 이전 버전에서만 유용하다는 경고를받습니다. http://help.dottoro.com/ljvtddtm.php – RustyTheBoyRobot

관련 문제