web-dev-qa-db-ja.com

カスタムフォーム送信時にライトボックスを閉じる

フォームAPIを使用してカスタムフォームを作成しています。私のフォームは以下です。

function myform_form() {
  $form = array();
  $form['name'] = array(
    '#type'          => 'textfield',
    '#title'         => t(''),
    '#required'      => FALSE,
    '#weight'        => 2,
  );
   $form['telephone'] = array(
    '#type'          => 'textfield',
    '#title'         => t(''),
    '#weight' => 3,
    );
     $form['submit'] = array(
      '#type' => 'submit',
      '#value' => t('submit'),
     );
  return $form;
}

function myform_submit($form, &$form_state) {
  drupal_set_message(t('Your form has been submitted successfully.'));
  $form_state['redirect'] = 'thankyou';
}

私はこのフォームをライトボックスに次のように表示するために使用しました:

<a href="/myform" rel="lightframe"> Form </a>

フォームがライトボックスに正しく表示されます。しかし、フォームを送信すると、ポップアップでthankyouページが開きます。

使った

<a href="/myform" rel="lightmodal"> Form </a>

フォームの検証でfalseが返されると、ポップアップイベントが閉じます。検証エラーが発生した場合、ポップアップを閉じたくありません。これをmyform_submit関数に追加しました:

parent.Lightbox.end();

ただし、drupal_add_jsmyform_submit関数では機能しません。

更新しました :

お礼ページにパラメーターを送り、ページ読み込み時に追加しました。

<?php if($_GET['redirect']) { ?>
  <script> 
      window.parent.location = "quick_request_quote";
  </script>
<?php } ?>

リダイレクトしますが、ポップアップでコンテンツを数秒間表示し、その後リダイレクトします。フォームを送信した後も、ポップアップを1秒間表示したくない。

4
Sumit Madan

処理メッセージを示すメニューを作成してこれを解決し、次を使用してリダイレクトします。

      window.parent.location = "thankyoupage";
0
Sumit Madan