質問 > フロント機能 > sphone版テンプレートで メール便では着日指定できないようにしておく方法 |
フロント機能
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
aro |
投稿日時: 2014/8/6 12:03
対応状況: −−−
|
半人前 登録日: 2014/4/7 居住地: 投稿: 17 |
sphone版テンプレートで メール便では着日指定できないようにしておく方法 いつもお世話になっております。
ECcube2.13.1にて、payment.tplに メール便を指定した際には着日指定できないように設定したいのですが スマートフォン版ではうまくいきません。 ttp://tech.bandersnatch.jp/387 こちらのサイトを参考にカスタマイズしたところ、 PC版では問題なく動作しております。 具体的には上記サイトのカスタマイズを参考に sphoneディレクトリ内のshopping/payment.tplの javascriptとお届時間の指定の部分のhtmlを以下のようにしました。 javascriptーーーーーーーーーーーーーーーーーーーーーーーーーーーーー <script type="text/javascript">//<![CDATA[ $(function() { if ($('input[name=deliv_id]:checked').val() || $('#deliv_id').val()) { showForm(true); changeForm(deliv_id); } else { showForm(false); } $('input[id^=deliv_]').click(function() { showForm(true); var data = {}; data.mode = 'select_deliv'; data.deliv_id = $(this).val(); data['<!--{$smarty.const.TRANSACTION_ID_NAME}-->'] = '<!--{$transactionid}-->'; $.ajax({ type : 'POST', url : location.pathname, data: data, cache : false, dataType : 'json', error : remoteException, success : function(data, dataType) { if (data.error) { remoteException(); } else { // 支払い方法の行を生成 var payment = $('#payment'); payment.empty(); for (var i in data.arrPayment) { // ラジオボタン var radio = $('<input type="radio" />') .attr('name', 'payment_id') .attr('id', 'pay_' + i) .val(data.arrPayment[i].payment_id); // ラベル var label = $('<label />') .attr('for', 'pay_' + i) .text(data.arrPayment[i].payment_method); // 行 var li = $('<li />') .append($('<td />') .addClass('centertd') .append(radio) .append(label)); li.appendTo(payment); } // お届け時間を生成 var deliv_time_id_select = $('select[id^=deliv_time_id]'); deliv_time_id_select.empty(); deliv_time_id_select.append($('<option />').text('指定なし').val('')); for (var i in data.arrDelivTime) { var option = $('<option />') .val(i) .text(data.arrDelivTime[i]) .appendTo(deliv_time_id_select); } } changeForm(deliv_id); } }); }); /** * 通信エラー表示. */ function remoteException(XMLHttpRequest, textStatus, errorThrown) { alert('通信中にエラーが発生しました。カート画面に移動します。'); location.href = '<!--{$smarty.const.CART_URL}-->'; } /** * 配送方法の選択状態により表示を切り替える */ function showForm(show) { if (show) { $('#payment, div.delivdate, .select-msg').show(); $('.non-select-msg').hide(); } else { $('#payment, div.delivdate, .select-msg').hide(); $('.non-select-msg').show(); } } function changeForm(deliv_id) { var deliv_time_id_select = $('select[id^=deliv_time_id]'); var deliv_date_select = $('select[id^=deliv_date]'); if (deliv_id=='1'||deliv_id=='6') { if(deliv_time_id_select){ deliv_time_id_select.attr("disabled", "disabled"); } if(deliv_date_select){ deliv_date_select.attr("disabled", "disabled"); } $('div.pay_area02_display_mail').show(); $('div.pay_area02_display').hide(); } else { $('div.pay_area02_display').show(); $('div.pay_area02_display_mail').hide(); if(deliv_time_id_select){ deliv_time_id_select.removeAttr("disabled"); } if(deliv_date_select){ deliv_date_select.removeAttr("disabled"); } } } $('#etc') .css('font-size', '100%') .autoResizeTextAreaQ({ 'max_rows': 50, 'extra_rows': 0 }); }); //]]></script> htmlーーーーーーーーーーーーーーーーーーーーーーーーーーーーー <!--★お届け時間の指定★--> <!--{if $cartKey != $smarty.const.PRODUCT_TYPE_DOWNLOAD}--> <section class="pay_area02"> <h3 class="subtitle">お届け時間の指定</h3> <!-- メール便対応カスタム --> <div class="pay_area02_display"> <div class="form_area"> <!--{foreach item=shippingItem name=shippingItem from=$arrShipping}--> <!--{assign var=index value=$shippingItem.shipping_id}--> <!--▼フォームボックスここから --> <!--{if $is_multiple}--> <div class="formBox"><!--{* FIXME *}--> <div class="box_header"> お届け先<!--{$smarty.foreach.shippingItem.iteration}--> </div> <div class="innerBox"> <!--{$shippingItem.shipping_name01}--><!--{$shippingItem.shipping_name02}--><br /> <span class="mini"><!--{$arrPref[$shippingItem.shipping_pref]}--><!--{$shippingItem.shipping_addr01}--><!--{$shippingItem.shipping_addr02}--></span> </div> <!--{else}--> <div class="time_select"><!--{* FIXME *}--> <!--{/if}--> <div class="btn_area_btm"> <!--★お届け日★--> <!--{assign var=key value="deliv_date`$index`"}--> <span class="attention"><!--{$arrErr[$key]}--></span> <!--{if !$arrDelivDate}--> ご指定頂けません。 <!--{else}--> <select name="<!--{$key}-->" style="<!--{$arrErr[$key]|sfGetErrorColor}-->" class="boxLong top data-role-none"> <option value="" selected="">お届け日:指定なし</option> <!--{assign var=shipping_date_value value=$arrForm[$key].value|default:$shippingItem.shipping_date}--> <!--{html_options options=$arrDelivDate selected=$shipping_date_value}--> </select> <!--{/if}--> <!--★お届け時間★--> <!--{assign var=key value="deliv_time_id`$index`"}--> <span class="attention"><!--{$arrErr[$key]}--></span> <select name="<!--{$key}-->" id="<!--{$key}-->" style="<!--{$arrErr[$key]|sfGetErrorColor}-->" class="boxLong data-role-none"> <option value="" selected="">お届け時間:指定なし</option> <!--{assign var=shipping_time_value value=$arrForm[$key].value|default:$shippingItem.time_id}--> <!--{html_options options=$arrDelivTime selected=$shipping_time_value}--> </select> </div> </div><!-- /.formBox --><!-- /.time_select --><!--{* FIXME *}--> <!--{/foreach}--> </div> </div> <div class="pay_area02_display_mail"> ※メール便は指定できません。 </div> </div> </div><!-- /.form_area --> </section> <!--{/if}--> ーーーーーーーーーーーーーーーーーーーーーーーーーーーーー これでPC版ではメール便を選ぶと着日指定が非表示になり ※メール便は指定できません。という文言のみ表示されたのですが、 したのですが、スマートフォン版だと動作しません。 お手数をおかけしますが ぜひ力をおかしください。 どうぞご指導よろしくお願いいたします。 |
reaps |
投稿日時: 2014/8/9 18:55
対応状況: −−−
|
半人前 登録日: 2008/11/13 居住地: 東京都港区南青山 投稿: 30 |
Re: sphone版テンプレートで メール便では着日指定できないようにしておく方法
JS部分のchangeForm(deliv_id);のdeliv_idが取得できてないためにエラーが起こっていると思われます。 changeForm(deliv_id); の直前でdeliv_idを宣言してあげれば大丈夫だと思います。
|
aro |
投稿日時: 2014/8/22 17:57
対応状況: −−−
|
半人前 登録日: 2014/4/7 居住地: 投稿: 17 |
Re: sphone版テンプレートで メール便では着日指定できないようにしておく方法 お返事が遅くなりましてもうしわけありません。
また、ご指導ありがとうございます! ご指導いただいた内容についてなのですが、 changeForm(deliv_id); の直前でdeliv_idを宣言するとは具体的にはどの部分の直前なのでしょうか? 以下の部分かと思って直前に記述してみたのですが うまく行きませんでした。 ↓ ↓ ↓ function changeForm(deliv_id) { var deliv_time_id_select = $('select[id^=deliv_time_id]'); var deliv_date_select = $('select[id^=deliv_date]'); if (deliv_id=='1'||deliv_id=='6') { if(deliv_time_id_select){ deliv_time_id_select.attr("disabled", "disabled"); } if(deliv_date_select){ deliv_date_select.attr("disabled", "disabled"); } $('div.pay_area02_display_mail').show(); $('div.pay_area02_display').hide(); } else { $('div.pay_area02_display').show(); $('div.pay_area02_display_mail').hide(); if(deliv_time_id_select){ deliv_time_id_select.removeAttr("disabled"); } if(deliv_date_select){ deliv_date_select.removeAttr("disabled"); } } 理解が遅く申し訳ありません。 お忙しいところお手数をおかけしますが、 何卒ご指導よろしくお願いいたします。 引用:
|
reaps |
投稿日時: 2014/8/28 0:32
対応状況: −−−
|
半人前 登録日: 2008/11/13 居住地: 東京都港区南青山 投稿: 30 |
Re: sphone版テンプレートで メール便では着日指定できないようにしておく方法 var deliv_id = $('input[name=deliv_id]:checked').val();
この1行をchangeForm(deliv_id);の直前に追加してみてください。
|
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |