0

私が取り組んでいる注文フォームがあります。ユーザーがさまざまなオプションを選択したときに、jQuery を使用してリアルタイムで価格を更新しています。したがって、現在、最終的なプロジェクトのコスト、パッケージの種類などは jQuery 変数に設定されています。これを PHP に変換してデータベースに挿入する必要があります。

コードを簡単に確認できます: http://jsfiddle.net/cadengrant/uddPA/2/

動作コードのライブ プレビュー: http://www.htmlified.com/order-now/

function update_price() {
        var base_cost = base_price;
        var basic_price = base_price;
        var pro_price = base_price;

        jQuery('.packages .selected').each(function(index) {
            base_cost += jQuery(this).data("price");
            basic_price += base_cost;
            pro_price += base_cost + 70;
        });

        jQuery('#markup-pages').each(function(index) {
            var price = Number(jQuery(this).val());
            var packages = jQuery('.packages .selected').data("price");
            var pages = 0;

            jQuery('#packages .selected').each(function(index) {
                if(jQuery(this).hasClass('basic')) {
                    if(packages == 199) {
                        pages = price * 99 - 99;
                    } else if (packages == 189) {
                        pages = price * 94 - 94;
                    } else if (packages == 399) {
                        pages = price * 199 - 199;
                    }
                } else if (jQuery(this).hasClass('pro')) {
                    if(pro_price == 269) {
                        pages = price * 134 - 134;
                    } else if (pro_price == 259) {
                        pages = price * 129 - 129;
                    } else if (pro_price == 469) {
                        pages = price * 234 - 234;
                    }
                }
            });

            base_cost += pages;

            /* Single or plural page text */
            if(price == 1) {
                var markup_pages = "markup page";
            } else {
                var markup_pages = "markup pages";
            }
            jQuery('.markup-pages').text(markup_pages);
        });

        jQuery('#packages .selected').each(function(index) {
            if(jQuery(this).hasClass('pro')) {
                base_cost += 70;
            }
        });

        /* Update Doctype */
        jQuery('input[name=page_doctype]:checked', '#order-form').each(function(index) {
            var basic_doctype_text = "";
            var pro_doctype_text = "";
            if(jQuery(this).hasClass('doctypehtml')) {
                var doctype_text = "W3C Valid HTML5 & CSS3";
            } else if (jQuery(this).hasClass('doctypexhtml')) {
                var doctype_text = "W3C Valid XHTML1 & CSS2";
                basic_doctype_text += " Transitional";
                pro_doctype_text += " Strict";
            }

            jQuery('.doctype-text').html(doctype_text);
            jQuery('.basic-doctype').html(doctype_text + basic_doctype_text);
            jQuery('.pro-doctype').html(doctype_text + pro_doctype_text);
        });

        jQuery('.price').html(base_cost);
        jQuery('.basic-price').html(basic_price);
        jQuery('.pro-price').html(pro_price);
    }

JS セクションのこれらの変数 (doctype テキスト、基本的な doctype、pro doctype、base_cost など) を order.php フォームに渡す方法を理解する必要があるだけなので、支払った金額、選択したパッケージの種類を更新できます。など、どんな助けでも大歓迎です。

4

2 に答える 2

2

ページには既にフォームがあります。このフォームに非表示の入力を作成して、フォームと一緒に送信することをお勧めします。元 :

<input type="hidden" name="base_cost" value="999">

jqueryで簡単に値を調整できます。フォームを php ページに送信した後、以下を使用してこれらの値を取得できます。

$base_cost = $_POST['base_cost'];

ただし、ユーザーからのすべての入力をサニタイズして検証することを忘れないでください。これが役に立ち、私の英語を許してくれることを願っています。

于 2013-09-11T04:12:20.867 に答える
-1

ユーザーからサーバー情報を伝える方法をお探しですか? フォームを送信せず、ajaxを使用しないと、私の友人は難しいでしょう:)

問題を正しく理解している場合は、ユーザーが何らかのアクションをトリガーしたときに、クライアント側でいくつかのパラメーターを変更する必要があります。その場合、ページの読み込み時に可能なパラメーターを読み込み、ユーザーがそれらのアクションをトリガーしたときに、既に読み込まれているパラメーターから新しいパラメーターを取得できます。次に、フォームを送信するときに、選択したパラメーターをフォームに追加します。

それが役に立てば幸い!

于 2013-09-11T04:09:42.457 に答える