投稿が遅くなり申し訳ございません。
修正後、エラーは無くなりました。
ありがとうございます。
ですが、
・メール便のみ
・メール便&宅急便
・宅急便のみ
カート内が上記の状態で検証致しましたが、
配送方法に変化が見られませんでした。
(メール便を全ての時に選択可能でした。)
もう少し頑張ってみます…。
●EC-CUBE メール便では着日指定できないようにしておく
http://tech.bandersnatch.jp/387上記のJS部分につきましてですが、
現在下記となっておりましたが、
<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_tbody = $('#payment tbody');
payment_tbody.empty();
for (var i in data.arrPayment) {
// ラジオボタン
<!--{* IE7未満対応のため name と id をベタ書きする *}-->
var radio = $('<input type="radio" name="payment_id" id="pay_' + i + '" />')
.val(data.arrPayment[i].payment_id);
// ラベル
var label = $('<label />')
.attr('for', 'pay_' + i)
.text(data.arrPayment[i].payment_method);
// 行
var tr = $('<tr />')
.append($('<td />')
.addClass('alignC')
.append(radio))
.append($('<td />').append(label));
// 支払方法の画像が登録されている場合は表示
if (data.img_show) {
var payment_image = data.arrPayment[i].payment_image;
$('th#payment_method').attr('colspan', 3);
if (payment_image) {
var img = $('<img />').attr('src', '<!--{$smarty.const.IMAGE_SAVE_URLPATH}-->' + payment_image);
tr.append($('<td />').append(img));
} else {
tr.append($('<td />'));
}
} else {
$('th#payment_method').attr('colspan', 2);
}
tr.appendTo(payment_tbody);
}
// お届け時間を生成
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=='20') {
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");
}
}
}
});
//]]></script>
上記から下記へ修正を行いました。
<script type="text/javascript">//<![CDATA[
$(function() {
if ($('input[name=deliv_id]:checked').val()
|| $('#deliv_id').val()) {
var deliv_id=null;
if($('input[name=deliv_id]:checked').val()){
deliv_id=$('input[name=deliv_id]:checked').val();
}
if($('#deliv_id').val()){
deliv_id=$('#deliv_id').val();
}
showForm(true);
changeForm(deliv_id);
} else {
showForm(false);
}
$('input[id^=deliv_]').click(function() {
showForm(true);
var deliv_id=null;
if($('input[name=deliv_id]:checked').val()){
deliv_id=$('input[name=deliv_id]:checked').val();
}
if($('#deliv_id').val()){
deliv_id=$('#deliv_id').val();
}
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_tbody = $('#payment tbody');
payment_tbody.empty();
for (var i in data.arrPayment) {
// ラジオボタン
<!--{* IE7未満対応のため name と id をベタ書きする *}-->
var radio = $('<input type="radio" name="payment_id" id="pay_' + i + '" />')
.val(data.arrPayment[i].payment_id);
// ラベル
var label = $('<label />')
.attr('for', 'pay_' + i)
.text(data.arrPayment[i].payment_method);
// 行
var tr = $('<tr />')
.append($('<td />')
.addClass('alignC')
.append(radio))
.append($('<td />').append(label));
// 支払方法の画像が登録されている場合は表示
if (data.img_show) {
var payment_image = data.arrPayment[i].payment_image;
$('th#payment_method').attr('colspan', 3);
if (payment_image) {
var img = $('<img />').attr('src', '<!--{$smarty.const.IMAGE_SAVE_URLPATH}-->' + payment_image);
tr.append($('<td />').append(img));
} else {
tr.append($('<td />'));
}
} else {
$('th#payment_method').attr('colspan', 2);
}
tr.appendTo(payment_tbody);
}
// お届け時間を生成
var deliv_time_id_select = $('select[id^=deliv_time_id]');
deliv_time_id_select.empty();
var no_select_label='';
var arr_deliv_time_length=0;
for (var i in data.arrDelivTime) {
arr_deliv_time_length++;
}
if(arr_deliv_time_length>0){
no_select_label='指定なし';
}else{
no_select_label='指定できません';
}
deliv_time_id_select.append($('<option />').text(no_select_label).val(''));
if(arr_deliv_time_length>0){
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_URLPATH}-->';
}
/**
* 配送方法の選択状態により表示を切り替える
*/
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=='20') {
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");
}
}
}
});
//]]></script>
参考サイト内の通りへ変更致しましたところ、
配送方法「メール便」を選択すると、
お届け時間&お届け日の項目を消すことに成功しました。
ただし最上部の方にかきました通り、
宅急便商品でも、メール便商品でも、
配送方法「メール便」を選択できてしまう為、
最終的な解決まで至っておりません。