バージョン選択

フォーラム

メニュー

オンライン状況

58 人のユーザが現在オンラインです。 (46 人のユーザが フォーラム を参照しています。)
登録ユーザ: 0
ゲスト: 58
もっと...

サイト内検索

バグ報告 > 管理機能 > 規格を設定した場合の初期値を固定したらカートに反映されていない

管理機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
mizuvan
投稿日時: 2014/11/19 16:45
対応状況: −−−
長老
登録日: 2013/3/26
居住地:
投稿: 253
規格を設定した場合の初期値を固定したらカートに反映されていない
規格を設定してある商品のプルダウンが初期値として一番最終のものが表示されてしまうことが嫌でいくつか選択できるうちの真ん中のものを初期値として設定したのです。

一見、表示もできプルダウンで選んだものがカートに反映されるのですが困ったことにプルダウンは操作せずそのままカートに入れると初期値として設定してあるはずの真ん中の数値で選択されていないという点です。

例えば、規格で1〜10まであるとしたら、初期値を5とします。

1や10をプルダウンから選んでカートに入れる分には問題ありませんでした。

しかし、初期設定で表示されている5のままでカートに入れると
最終値で設定してある10になってしまってカートに入ってしまうのです。

今回カスタマイズしたのはテンプレートファイルのみ

これではダメなのでしょうか?

                    <!--{if $tpl_stock_find}-->
                        <!--{if $tpl_classcat_find1}-->
                            <div class="classlist">
                                <!--▼規格1-->
                                <ul class="clearfix">
                                    <li><!--{$tpl_class_name1|h}-->:</li>
                                    <li>
                                        <select name="classcategory_id1" style="<!--{$arrErr.classcategory_id1|sfGetErrorColor}-->">
                                        <!--{html_options options=$arrClassCat1 selected=<※この部分に規格IDを入力しました>}-->
                                        </select>
                                        <!--{if $arrErr.classcategory_id1 != ""}-->
                                        <br /><span class="attention">※ <!--{$tpl_class_name1}-->を入力して下さい。</span>
                                        <!--{/if}-->
                                    </li>
                                </ul>
                                <!--▲規格1-->
                                <!--{if $tpl_classcat_find2}-->
                                <!--▼規格2-->
                                <ul class="clearfix">
                                    <li><!--{$tpl_class_name2|h}-->:</li>
                                    <li>
                                        <select name="classcategory_id2" style="<!--{$arrErr.classcategory_id2|sfGetErrorColor}-->">
                                        </select>
                                        <!--{if $arrErr.classcategory_id2 != ""}-->
                                        <br /><span class="attention">※ <!--{$tpl_class_name2}-->を入力して下さい。</span>
                                        <!--{/if}-->
                                    </li>
                                </ul>
                                <!--▲規格2-->
                                <!--{/if}-->
                            </div>
                        <!--{/if}-->



EC-CUBEバージョン:2.13.2
PHP情報:5.3.28
DB情報:MySQL 5.6.13-log
tsuji
投稿日時: 2014/11/20 10:30
対応状況: −−−
仙人
登録日: 2013/11/19
居住地:
投稿: 958
Re: 規格を設定した場合の初期値を固定したらカートに反映されていない
mizuvan 様

試してはないのでアイデアとして読んでいただけたらと思います。

商品詳細ページの規格を選択するセレクトボックスは、セレクトボックス
の値が変わった際にjavascriptの関数が処理されているように記憶してい
ます。

その処理が流れないことが原因だと仮定すると、画面のロード終了後に
セレクトボックスのチェンジイベントを発生させるならうまく動くかも
しれません。


----------------
****************************************
株式会社システムフレンド
辻 拓也(takuya tsuji)
改造専門店・EC-CUBE工房
****************************************

mizuvan
投稿日時: 2014/11/20 15:41
対応状況: −−−
長老
登録日: 2013/3/26
居住地:
投稿: 253
Re: 規格を設定した場合の初期値を固定したらカートに反映されていない
ありがとうございます。javascriptが影響するのですね


/js/eccube.js にそれらしき記述がありました。

このどこかに selected について記述すればよいのですね・・・


    /**
    * Initialize.
    */
    $(function() {
        // 規格1選択時
        $('select[name=classcategory_id1]')
        .change(function() {
            var $form = $(this).parents('form');
            var product_id = $form.find('input[name=product_id]').val();
            var $sele1 = $(this);
            var $sele2 = $form.find('select[name=classcategory_id2]');

            // 規格1のみの場合
            if (!$sele2.length) {
                eccube.checkStock($form, product_id, $sele1.val(), '0');
                // 規格2ありの場合
            } else {
                eccube.setClassCategories($form, product_id, $sele1, $sele2);
            }
        });

        // 規格2選択時
        $('select[name=classcategory_id2]')
        .change(function() {
            var $form = $(this).parents('form');
            var product_id = $form.find('input[name=product_id]').val();
            var $sele1 = $form.find('select[name=classcategory_id1]');
            var $sele2 = $(this);
            eccube.checkStock($form, product_id, $sele1.val(), $sele2.val());
        });

tsuji
投稿日時: 2014/11/21 9:28
対応状況: −−−
仙人
登録日: 2013/11/19
居住地:
投稿: 958
Re: 規格を設定した場合の初期値を固定したらカートに反映されていない
mizuvan 様

/js/eccube.jsではなく、商品詳細ページの中に記述するほうがよいと思います。
他に影響が出てしまうとまずいと思いますので。
お伝えした方法は、jQuweyで「○○.change()」を画面ロード時の
処理で書いたら良いというものでした。


画面のセレクトボックスを内容を変更したらうまく動くということなので、
値をはじめにセットするようにテンプレートを書き換え、その後
チェンジイベントを発生させれば、うまく動作するのではないかと
考えたのです。

例えば、下記のように。動作確認はしていませんが
試していただけたらと思います。

    $(window).load(function(){
        $("select[name=classcategory_id1]").change()
    });


----------------
****************************************
株式会社システムフレンド
辻 拓也(takuya tsuji)
改造専門店・EC-CUBE工房
****************************************

mizuvan
投稿日時: 2014/11/21 17:55
対応状況: 解決済
長老
登録日: 2013/3/26
居住地:
投稿: 253
Re: 規格を設定した場合の初期値を固定したらカートに反映されていない
おお!ありがとうございました!!

完璧に出来ました。感激です!

スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


EC-CUBE公式 Amazon Payプラグイン

統計情報

総メンバー数は88,289名です
総投稿数は109,689件です

投稿数ランキング

1
seasoft
7365
2
468
3217
3
AMUAMU
2712
4
nanasess
2303
5
umebius
2085
6
yuh
1818
7
h_tanaka
1610
8
red
1568
9
mcontact
1240
10
tsuji
958
11
fukap
907
12
shutta
835
13
tao_s
796
14 ramrun 789
15 karin 689
16 sumida 641
17
homan
633
18 DELIGHT 572
19
patapata
502
20
flealog
485


ネットショップの壺

EC-CUBEインテグレートパートナー

Copyright© EC-CUBE CO.,LTD. All Rights Reserved.