2016-07-07 5 views
0

ページにアパレル注文フォームがあります。ドロップダウンリスト/メニューからオプションを選択すると、そのフォームを別のものとスワップアウトする必要があります。多分アヤックス? PHP include()?ドロップダウンのオプションは、すでに別のディレクトリにテンプレートとして作成されている別のフォームを選択し、別のフォームの代わりにレンダリングします。ドロップダウンメニュー選択時に別のフォームに変更する

一度に1つのフォームしか表示されません。ありがとう! :)

+2

私は参考になる:http://stackoverflow.com/questions/3675006/how-to-switch-choose-between-html-forms – AkshayP

+0

@AshkayPありがとう、私はそれを見て、それをテストしているが、そのようになります20のフォームのために働く? 50形?私たちは多くのスタイルを持っています。 1ページに多くのフォームが隠されていても問題はありませんか? – Bigfootbud

答えて

0

できるだけ多くの隠しフォームを置いてはいけません。特にパフォーマンスに関しては、デザインが悪いだけです。

  • ます場合は条件がで物事を詰めるよう

を満たしている場合の通信にAJAX要求を使用し、各

  • 内のフォームにいくつかのPHPファイルを作成します。あなたの最善の策はであり1つのファイル一意のパラメータとAJAXをPHPファイルに、の値をチェックしてロードするフォームをに設定してみてください。

    :PHPで

    var xhr = new XMLhttpRequest(); 
        formID = (condition) ? 1 : 2; // etc 
    
        //^^ This one line above means: 
        if (condition) { 
         formID = 1; 
        } 
        else { 
         formID = 2; 
        } 
    
    ... 
    
    // GET request 
    xhr.open("GET", "forms.php?formID=" + formID); 
    
    // POST request 
    xhr.send("formID=" + formID); 
    

    <?php 
        if (isset($_POST["formID"]) && $_POST["formID"] === 1): 
    ?> 
         <form id = "1"></form> 
    <?php 
        else: 
    ?> 
         <form id = "2"></form> 
    <?php 
        endif; 
    ?> 
    

    [EDIT]

    あなたはその後、別のファイル内の各フォームを持つようにしたい場合は上記のコードは

    JavaScriptで
    <form>...</form> // No PHP necessary 
    

    (フォームが別のファイルである場合にのみ、)の任意の値を入れずにxhttp.send("")を使用しています。

  • +0

    私は少し初心者ですので、あなたのコードは私には少し曖昧です。私は各フォームのテンプレートを作成し、AJAXを使用して任意のページをページにレンダリングできると言っていますか? – Bigfootbud

    +0

    正確に。あなたの2つのフォームを作成し、PHPがどのオブジェクトをレンダリングするかを決めるために、それらを 'if文 'の中に入れてください。 PHPは、AJAXリクエストで送信するデータに基づいて、どちらをレンダリングするかを決定します。本当に何でもかまいませんが、簡単にするために数字「1」と「2」を使用しました。 –

    +0

    また、あなたがまだ知らない場合は、 'isset()'が存在するかどうかを確認してください。したがって 'if isset($ _ POST [" formID "])'はPHPがAJAXからデータを受け取ったかどうかを調べます。次に、表示するフォームを決定するためにその値をチェックします。 –