2009-05-07 4 views
0

팝업 창에서 양식을 여는 코드는 다음과 같습니다. 제출 버튼을 클릭 한 후 1250 밀리 초 후에 경고 팝업이 표시됩니다. 페이지가 양식을 제출 한 결과로 리다이렉트되기 때문에 현재는 작동하지 않습니다.양식을 클릭 한 후 지연된 작업이 있습니다.

<?php 
$blah = "Well"; $test = "Done"; 
echo '<script type="text/javascript" src="fetchlayers.js"></script>'; 
$formcode = "<form action=\"process.php\" method=\"post\" enctype=\"multipart/form-data \"><label for=\"file\">Filename:</label><input type=\"file\" name=\"file\" id=\"file\"/> <br /><input type=\"submit\" name=\"submit\" value=\"Submit\" onclick=\"setTimeout(function() { alert('$blah'); },1250);\" /></form>"; 


echo "<h1>hello</h1> 
<div id='form'> 
<a href='#' onclick=\"createpopup('" . htmlentities($formcode) . "'); return false;\"> 
click here</a> 
</div>"; 

양식을 제출 한 후 지연된 조치를 취하는 가장 좋은 방법은 무엇입니까?

답변

1

시도는 양식을 제출 한 후 만약 내가 제대로 이해하고, 당신이 양식을 포함하는 팝업을 열려면 오히려이

0

버튼을 제출 사용하는 것보다 타이머 콜백 내부 document.form.submit()를 사용하는 , 경고 상자를 보여?

setTimeout() 콜백에서 window.opener를 사용해보십시오. 이렇게하면 원래 창에 알림 상자가 표시됩니다. 팝업 페이지가 리디렉션 된 것은 중요하지 않습니다.

+0

방금 ​​예를 들어 알래트를 의심했지만, 실제로 아약스 – Josh20002

+0

을 통해 부모의 div를 업데이트하려면 내 ownmethod 중 하나를 호출하고 싶습니다. 기본 창을 참조하는 window.opener 속성을 사용하면 모든 함수를 호출 할 수 있어야합니다. 모든 DOM 요소에서 작동합니다. – msharp

0

양식을 제출 한 후 지연된 조치를 취하는 가장 좋은 방법은 무엇입니까?

같은 창에서이 두 작업을이 순서대로 수행 할 수 없습니다. 양식이 제출되면 즉시 현재 페이지의 상태를 뒤로두고 새로운 자원을 요청합니다.

팝업 창에서 상위 창에 대한 참조가 표시됩니다. 사용자가 양식을 제출하기를 원하면 부모 윈도우에서 지연된 작업을 실행하기 위해 일부 JavaScript를 호출 한 다음 팝업의 양식을 제출하도록 허용 할 수 있습니다.

편집 : 여기에 의견에 따라 Windows간에 통신하는 방법이 있습니다.

<!-- parent.html --> 
<input type="button" onclick="doOpenChild();" value="Spawn Child Window" /> 

<script type="text/javascript"> 
    function doOpenChild() { 
    window.open(
     "child.html", 
     "child" 
    ); 
    } 

    function doSomething() { 
    setTimeout(
     function(){ 
     alert(fileINeedToCheck); 
     }, 
     2000 
    ); 
    } 

    // Set variable for child to update... 
    window.fileINeedToCheck = "unset"; 
</script> 

스폰이 같은 뭔가 팝업 :

<!-- child.html --> 
<form action="/someaction.php" name="childForm" onsubmit="communicateWithParent(this);"> 
    <input type="text" name="fileName" value="100" /> 
    <input type="submit" value="Submit" /> 
</form> 

<script type="text/javascript"> 
    function communicateWithParent(aForm) { 
    if(window.opener) { 
     if(window.opener.fileINeedToCheck) { 
     window.opener.fileINeedToCheck = aForm.fileName.value; 

     // You can also call functions from the parent window... 
     window.opener.doSomething(); 
     } 
    } 
    } 
</script> 

부모 윈도우의 변수는 자식 창에서 값을 업데이트 할 수 있습니다 당신은이 같은 간단한 설정을 할 수 있습니다.

+0

실제로 파일의 목록을 표시하기 위해 ajax를 통해 부모 창에서 div를 업데이트하고 파일을 업로드 할 적절한 시간대를 지정하려고합니다. 이 작업을 수행하는 더 좋은 방법이 있습니까? – Josh20002

+0

그럴 경우 할 수있는 일이 몇 가지 있습니다. 상위 창에서 변수를 생성하고 파일 목록을 업데이트 할 준비가되면 하위 창에서 변수를 업데이트 할 수 있습니다. 그런 다음 값이 변경되고 AJAX가 파일 목록을 업데이트하는지 주기적으로 확인할 수 있습니다. –

+0

내 하위 창은 간단히 파일을 업로드 한 다음 업로드 된 파일의 이름을 표시합니다. 가장 간단한 방법은 php 결과 페이지에서 my js 함수를 호출하여 레이어를 업데이트하는 것입니다. 이것이 가능한가? – Josh20002

관련 문제