バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

質問 > フロント機能 > 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版テンプレートで メール便では着日指定できないようにしておく方法
// お届け時間を生成
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);

}


JS部分のchangeForm(deliv_id);のdeliv_idが取得できてないためにエラーが起こっていると思われます。

changeForm(deliv_id);
の直前でdeliv_idを宣言してあげれば大丈夫だと思います。



----------------
*******☆ reaps-factory.inc ☆*******
+++++++++++++++++++++++++++++++
株式会社Reaps-Factory.
(リープスファクトリー)
+++++++++++++++++++++++++++++++

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さんは書きました:
// お届け時間を生成
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);

}


JS部分のchangeForm(deliv_id);のdeliv_idが取得できてないためにエラーが起こっていると思われます。

changeForm(deliv_id);
の直前でdeliv_idを宣言してあげれば大丈夫だと思います。


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);の直前に追加してみてください。


// お届け時間を生成
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);
}
}
var deliv_id = $('input[name=deliv_id]:checked').val(); //ここです
changeForm(deliv_id);

}


----------------
*******☆ reaps-factory.inc ☆*******
+++++++++++++++++++++++++++++++
株式会社Reaps-Factory.
(リープスファクトリー)
+++++++++++++++++++++++++++++++

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


 



ログイン


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

統計情報

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

投稿数ランキング

1
seasoft
7367
2
468
3217
3
AMUAMU
2712
4
nanasess
2313
5
umebius
2085
6
yuh
1819
7
h_tanaka
1638
8
red
1570
9
mcontact
1285
10
tsuji
958
11
fukap
907
12
shutta
835
13
tao_s
799
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.