2014-12-16 2 views
0

키를 누르면 새 창이 열리 며, 해당 창에서 사용자가 파일을 선택하고 클릭하는 버튼이 있습니다. 클릭하면 값이 양식의 숨겨진 입력으로 전달되어 창을 닫아야합니다. 모든 것이 작동해야하는 것처럼 작동하며 작동하지 않는 유일한 점은 입력 값이 비어있는 것입니다.window.opener에서 부모로 값을 전달할 수 없습니다.

이 내 입력 :

<input name="value_pdf" value="" type="hidden" id="value_pdf" /> 

그리고 여기에 기능입니다 :

$(".insert").click(
    function() { 
      var file = $(this).attr("rel"); //its correct and passes the value I want 
      var value = "value_<?php echo $_GET['but'];?>" //again, this is correct too, I've used console.log() to check 

      opener.$("#value_pdf").val(file); 
      //I've done a console.log() here to to check if #value_pdf had a value and it was correct, it logged something like "database.pdf" 

      window.close(); 
      return false; 
    } 
); 

, 내가 잘못 내 질문을 했는가입니다

은? 나는 모든 것이 옳은 것 같다. ...

EDIT : 내 코드의 어딘가에서 나는 DIV에 같은 ID를 가지고있다. 비록 당신이 똑같은 문제가 있다면 당신이 선택한 대답을 확인하는 것이 좋습니다, 그것은 내 코드를 더 좋게 만들었습니다.

+0

http://stackoverflow.com/questions/2167455/how-to-access-parent-window-object-using-jquery 오프너 (부모)에서 jquery가 활성화되어 있는지 확인 – brso05

+1

콘솔에서 오류가 발생 했습니까? – faby

+0

@faby, 아니오, 오류가 발생하지 않습니다. – rafamds

답변

1

나는 결코 opener.$(...)을 시도한 적이 없지만 그것이 작동해야하며, 오프너 창이 여전히 존재하고 도메인 간 문제가없는 것으로 보입니다.

작동하지 않는 경우에는 오프너에 함수를 작성하고 하위 창에서 함수를 호출 해 볼 수 있습니다. 자식 창에서

function setValue(selector, value) { 
    $(selector).val(value); 
} 

:이 작업을하는 이유

window.opener.setValue("#value_pdf", file); 

난 정말 볼 수없는 (글로벌 네임 스페이스 또는 전역에서 액세스 할 수있는 몇 가지 네임 스페이스) 오프너에서

opener.$(...)이 아니라면 근본적인 차이가 없기 때문입니다. 하지만, 이봐, 알지 못해 ...

+0

당신이 보내준 것처럼, 그리고 $ (selector) .val (value); 나는 그것을 콘솔로 사용했다. 그리고 작동했지만 입력 값을 변경하지 않았습니다. – rafamds

+0

그런 다음'$'(jQuery)가 실패하거나 선택자가 (아직) 존재하지 않는 요소를 가리키고 있습니다. –

+0

jQuery가 작동 중입니다. 다른 선택기를 사용해 보았습니다. 이미 복제 된 입력에서 생성되었음을 언급 했어야합니다. 사용자가 더 많은 파일을 추가 할 수 있도록 입력을 복제하는 버튼이 있으며, 첫 번째 입력에서는 위대한 기능을 수행합니다. 하지만 두 번째, 세 번째, 네 번째 ... DOM이로드되지 않았을 가능성이 있습니까? – rafamds

0

PHP를 사용하고 있다면 자바 스크립트를 통해 전송하는 대신 사용할 것입니다. 그리고 같은 페이지에 정보가 필요하면 AJAX를 사용합니다.

http://api.jquery.com/jquery.post/

샘플은 다음과 같이 보일 것이다.

$.post("test.php", $("#testform").serialize());
<form id="testform"> 
 
<input name="something"> 
 
</form>

이 양식을 제출 "무엇인가"라는 입력을하고 "test.php"페이지에 게시합니다.

+1

OP는 부모 (개막 자)와 그 자식이라는 두 개의 창으로 작업합니다. 그는 한 페이지를 다시로드하지 않고 어린이로부터 부모에게 무언가를 보내려고합니다. –

관련 문제