2010-11-23 14 views
0

私は1つのページに複数のiframeを持っていますが、フォームにはそれぞれ1つのフォームが含まれています。ユーザーがsubmitを押すとフォームを送信してからページを閉じる必要があります。誰にでも私を助けることができますか?複数のフォームを送信

ボタン

function Save_Close() 
    { 
     if (window.frames.intake_pat_info_iframe && window.frames.intake_pat_info_iframe._Submit('Update')) { 
      window.frames.intake_pat_info_iframe._Submit('Update'); 

     } 
     if (window.frames.intake_job_info_iframe && window.frames.intake_job_info_iframe._Submit('Update')) { 
      window.frames.intake_job_info_iframe._Submit('Update'); 

     } 
     if (window.frames.intake_spine_his_iframe && window.frames.intake_spine_his_iframe._Submit('Update')) { 
      window.frames.intake_spine_his_iframe._Submit('Update'); 

     } 
     if (window.frames.intake_past_med_history_iframe && window.frames.intake_past_med_history_iframe._Submit('Update')) { 
      window.frames.intake_past_med_history_iframe._Submit('Update'); 
    } 

....

<input type="button" id="" name="" value="Save & Close" onclick="Save_Close()"/> 

のthnx

答えて

0

Javascriptを使用でき、iframeがすべて同じサーバーから配信されている限り、それほど難しいことではありません。明示的form.submitButton呼び出し:完全に純粋なインラインJSのアプローチは

<%@ Page Language="C#" %> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"> 
<head> 
    <title>IFRAME form submit demo</title> 
</head> 
<body> 
    <iframe name="iframe1" src="my_form.aspx"></iframe> 
    <iframe name="iframe2" src="my_form.aspx"></iframe> 
    <iframe name="iframe3" src="my_form.aspx"></iframe> 
    <iframe name="iframe4" src="my_form.aspx"></iframe> 
    <input type="submit" value="Submit All IFrames" 
      onclick="for(var i = 0; i < frames.length; i++) { frames[i].document.forms[0].submitButton.click(); }" /> 
</body> 
</html> 

EDIT(これはサーバー側のもののためASP.NETを使用しているが、重要なビットは、ボタンでのonclick()ハンドラである)のように見えます送信ボタンのクリックハンドラにバインドされた関数を呼び出すには、form.submit()の代わりに.click()を使用します。

+0

これらのIFrame内の関数を使用してフォームを送信したい – ama

0

これを達成するのは容易ではありません提出onclickの上と呼ばれるこの機能。

各IFrameは異なるドキュメントで、送信ボタンは1つのフォーム(所属するフォーム)でのみ動作します。

これを動作させるには、JavaScriptを使用してすべてのIFrameからデータを収集し、送信ボタンがオンになっているフォームに1つ以上の非表示フィールドを設定する必要があります。

ただし、別のIFrameが異なるドメインにある場合は、same originセキュリティポリシーのためにこれを行うことはできません。

+0

それぞれのiframeに関数が含まれているので、グローバルボタンはフォームを送信するためにこれらの関数を呼び出す必要がありますが、最初のフォームのみを送信します。 – ama

+0

@ama - そうです。送信ボタンは、送信しているフォームのみを送信します。他のIFrameで関数を呼び出す場合は、送信ボタンからjavascriptを使用して関数を呼び出す必要があります。コードを見ることなく、より具体的なアドバイスをするのは難しいです。 – Oded

関連する問題