Корректировка php скрипта

svzla

Новичок
Суть проблемы такова: на сайте есть js ползунок с выбором интервала доставки(13-15, 15-17 и т.д.), но работает он немного криво. Нужно сделать так, чтобы выбор интервала на 'сегодняшний' день был ограничен - т.е., например, если человек хочет выбрать интервал 13-15 в 12:50, нужно заблокировать все нижестоящие интервалы, включая 13-15, и оставить для выбора только последующие. Буду очень благодарен помощи и советам! PHP код:

Код:
function showOrderProperty ( $arProp, $arDataProps )
{
 $readonly = $required = $dataRequired = '';
 if ( $arProp['REQUIRED'] == 'Y' )
 {
 $required = ' *';
 $dataRequired = ' data-required';
 }
 
 if ( $arProp['READONLY'] == 'Y' )
 {
 $readonly = ' readonly';
 }
 
 $dataPhone = $arProp['IS_PHONE'] == 'Y' ? ' data-input-phone' : '';
 $class = 'form-control bx-soa-customer-input bx-ios-fix';
 $class .= $arProp['CODE'] == 'DATE' ? ' date-input' : '';
 $class .= $arProp['CODE'] == 'TIME_DELIVERY' ? ' time-input' : '';
 $class .= $arProp['IS_PHONE'] == 'Y' ? ' phone-input' : '';
 $string = '<div class="form-group bx-soa-customer-field">';
 if ( $arProp["TYPE"] == "ENUM" && $arProp["ID"] != 34)
 {
 foreach ( $arProp["OPTIONS"] as $value => $name )
 {
 $string .= '<div class="soa-property-container input-group">';
 $string .= '<div class="radio">';
 $string .= '<input type="radio" name="ORDER_PROP_' . $arProp['ID'] . '" value="' . $value . '" id="radio-' . $arProp['ID'] . '-' . $value . '" ' . ( in_array( $value, $arProp["VALUE"] ) ? 'checked' : '' ) . '>';
 $string .= '<label for="radio-' . $arProp['ID'] . '-' . $value . '" class="bx-soa-custom-label">' . $name . '</label>';
 $string .= '</div>';
 $string .= '</div>';
 }
 }
 elseif ( $arProp["ID"] == 34)
 {
 $current_hour = date("H")."-".date("H",strtotime($date. " + 2hour "));
 $nextHour = date("H",strtotime($date. " + 1hour "))."-".date("H",strtotime($date. " + 3hour "));
 
 $current_hour_selected = "";
 
 $string .= '<div class="soa-property-container input-group">';
 $string .= '<select name="ORDER_PROP_' . $arProp['ID'] . '" class="form-control">';
 foreach ( $arProp["OPTIONS"] as $value => $name )
 {
 
 if( in_array( $value, $arProp["VALUE"] ) ){
 $current_hour_selected = "selected";
 }else{
 
 if( intval($_REQUEST["currentStep"]) < 3 ){
 if( $value == $current_hour || $value == $nextHour ){
 $current_hour_selected = "selected";
 }else{
 $current_hour_selected = "";
 }
 }else{
 $current_hour_selected = "";
 }
 
 }
 
 $string .= '<option value="' . $value . '" ' . $current_hour_selected . ' data-sd="'.$nextHour.'" >' . $name . '</option>';
 }
 $string .= '</select><span></span>';
 $string .= '</div>';
 }
 elseif ( $arProp["TYPE"] == "Y/N" )
 {
 // $string .= '<div class="soa-property-container input-group">';
 $string .= '<input type="hidden" name="ORDER_PROP_' . $arProp['ID'] . '" value="N">';
 
 $string .= '<div class="checkbox">';
 $string .= '<input type="checkbox" name="ORDER_PROP_' . $arProp['ID'] . '" value="Y" id="checkbox-' . $arProp['ID'] . '-Y" ' . ( in_array( 'Y', $arProp["VALUE"] ) ? 'checked' : '' ) . '>';////
 $string .= '<label for="checkbox-' . $arProp['ID'] . '-Y" class="bx-soa-custom-label">' . $arProp['NAME'] . '</label>';
 $string .= '</div>';
 // $string .= '</div>';
 }
 elseif ( $arProp["ROWS"] > 1 )
 {
 $string .= '<div class="soa-property-container input-group">';
 $string .= '<textarea type="text" name="ORDER_PROP_' . $arProp['ID'] . '" id="soa-property-' . $arProp['ID'] . '" autocomplete="off" placeholder="' . $arProp['DESCRIPTION'] . $required .
 '" class="form-control bx-soa-customer-input input-textarea bx-ios-fix">' . $arDataProps[ $arProp['ID'] ] . '</textarea>';
 $string .= '</div>';
 }
 else
 {
 $my_datetime = "";
 if( $arProp['ID'] == "27" ){
 $my_datetime = " datetime_input_27";
 }
 
 $string .= "";
 $string .= '<div class="soa-property-container input-group'.$my_datetime.'">';
 $string .= '<input type="text" name="ORDER_PROP_' . $arProp['ID'] . '" id="soa-property-' . $arProp['ID'] . '" value="' . $arDataProps[ $arProp['ID'] ] .
 '" class="' . $class . '" placeholder="' . $arProp['DESCRIPTION'] . $required . '"' . $dataRequired . $readonly . '>';
 // $string .= $arProp['CODE'] == 'DATE'? '<div class="input-group-append bx-no-alter-margin"><span class="input-group-text"><i class="fa fa-calendar"></i></span></div>':'';
 $string .= $arProp['CODE'] == 'DATE' ? '<span class="input-group-addon input-group-append bx-no-alter-margin"></span>' : '';
 $string .= $arProp['CODE'] == 'TIME_DELIVERY' ? '<span class="input-group-addon input-group-append bx-no-alter-margin"></span>' : '';
 $string .= '</div>';
 }
 
 $string .= '</div>';
 
 return $string;
}
 
 
function showPropertyResult ( $arProp, $arDataProps )
{
 $string = '<p>';
 if($arProp['DESCRIPTION'])
 $string .= '<b>' . $arProp['DESCRIPTION'] . '</b>: ';
 if ( $arProp["TYPE"] == "ENUM" )
 {
 foreach ( $arProp["OPTIONS"] as $value => $name )
 {
 if ( in_array( $value, $arProp["VALUE"] ) )
 {
 $string .= $name;
 }
 }
 }
 elseif ( $arProp["TYPE"] == "Y/N" )
 {
 if ( in_array( 'Y', $arProp["VALUE"] ) )
 {
 $string .= $arProp['NAME'];
 }
 }
 elseif ( $arProp["ROWS"] > 1 )
 {
 $string .= $arDataProps[ $arProp['ID'] ];
 }
 else
 {
 $string .= $arDataProps[ $arProp['ID'] ];
 
 }
 $string .= '</p>';
 
 return $string;
}
 

AnrDaemon

Продвинутый новичок
Если хотите, чтобы сделали работу за вас, вам в раздел "работа" с указанием оплаты.
 

svzla

Новичок
Можете, пожалуйста, подсказать, где именно в JS я мог бы добавить условие, с помощью которого в ползунке скрывались бы 'ненужные' интервалы?
Насколько я понял, данный JS непосредственно относится к php скрипту.
JavaScript:
window.submitForm = window.SubmitFormOrder = function (flag = 'N') {
    let form = $('#ORDER_FORM'),
        confirmorder = $('input[name=confirmorder]', form),
        check = 'N';

    if (flag === 'Y') check = flag;
    confirmorder.val(check);
console.log(form);
    form.submit();
};

$(document).on('change', '[name=USER_TIME_27]', function (e) {
    if( this.checked ) {
        $(".my-data-time1 .form-group").css("display", "block");
    }else{
        $(".my-data-time1 .form-group").css("display", "none");
    }
 
});

/*

function validateForm(form) {
    $(form).find(".error").removeClass("error");
    var send = 1;
    $(form).find("[data-required]").each(function () {
        if ($(this).val() === "") {
            $(this).addClass("error");
            send = 0;
        }
    });

    $(form).find("textarea").each(function () {
        if (($(this).data("required") === "Y") && ($(this).val() === "")) {
            $(this).addClass("error");
            send = 0;
        }
    });
    return send;
}
*/
// Оформление заказа
$(document).on('submit', 'form#ORDER_FORM', function (e) {
    e.preventDefault();
$('.btn-order-save').text('Подождите...').attr('disabled', 'disabled');
    let obj = $(this),
        id = obj.attr('id'),
        data_params = obj.serialize(),
        url = this.action;


    // if (obj.find("#confirmorder").val() === "Y" && !validateForm(obj)) {
    //     $(obj).find('.error:first').focus();
    //     return false;
    // }

    $.ajax({
        type: 'POST',
        url: url,
        dataType: 'html',
        data: data_params,
        success: function (data) {
            try {
                let data1 = JSON.parse(data);
                if (data1.success === 'Y') window.location.href = data1.redirect;
            } catch (e) {

            }

            if (id.length > 0) {
                $('form#' + id).html($('form#' + id, '<div>' + data + '</div>').html());
            }

            $(window).scroll();
            maskPhone();
            hideStraightTime();
        }
    });
    return false;
});

// $(window).scroll(function () {
//     if (document.documentElement.clientWidth < 768) return;

//     var sb_m = 20; /* отступ сверху и снизу */
//     var mb = 300; /* высота подвала с запасом */
//     var st = $(window).scrollTop();
//     var sb = $(".sticky-block");
//     var sbi = $(".sticky-block .inner");
//     var sb_ot = sb.offset().top;
//     var sbi_ot = sbi.offset().top;
//     var sb_h = sb.height();

//     if (sb_h + $(document).scrollTop() + sb_m + mb < $(document).height()) {
//         if (st > sb_ot) {
//             var h = Math.round(st - sb_ot) + sb_m;
//             sb.css({"paddingTop": h});
//         } else {
//             sb.css({"paddingTop": 0});
//         }
//     }
// });

$(document).on('change', '[name=ORDER_PROP_23], [name=ORDER_PROP_21]', function (e) {
    hideRecipientFields();
});

function hideStraightTime() {
    if ($('[name="DELIVERY_ID"]:checked').val() == "18") {
        $('input[name="ORDER_PROP_21"]').closest('.bx-soa-customer').show();
    } else {
        $('input[name="ORDER_PROP_21"]').closest('.bx-soa-customer').hide();

    }
}
// $(function () {
//     $('[name=ORDER_PROP_23]').change();
// });

function hideRecipientFields() {
    let val = $('[name=ORDER_PROP_23]:checked').val();

    if (val === 'me') {
        $("[name=ORDER_PROP_24],[name=ORDER_PROP_25],[name=ORDER_PROP_26]").prop("disabled", true);
        $("[name=ORDER_PROP_24],[name=ORDER_PROP_25],[name=ORDER_PROP_26]").closest('.bx-soa-customer-field').hide();
    } else {
        $("[name=ORDER_PROP_24],[name=ORDER_PROP_25],[name=ORDER_PROP_26]").prop("disabled", false);
        $("[name=ORDER_PROP_24],[name=ORDER_PROP_25],[name=ORDER_PROP_26]").closest('.bx-soa-customer-field').show();
    }

    val = $('[name=ORDER_PROP_21]:checked').val();

    if (val == "Y") {
        $(".time-interval input").prop("disabled", true);
        $(".time-interval").hide();
        $(".my-data-time input").prop("disabled", false);
        $(".my-data-time ").show();

    } else {
        $(".time-interval input").prop("disabled", false);
        $(".time-interval").show();
        $(".my-data-time input").prop("disabled", true);
        $(".my-data-time").hide();
    }
}

$(document).on('click', '.date-input', function (e) {
    $('.date-input+.input-group-addon').trigger('click');
});

$(document).on('click', '.time-input', function (e) {
    $('.time-input+.input-group-addon').trigger('click');
});

$(document).on('click', '[data-save-btn]', function (e) {
    e.preventDefault();

    let
        $stepInput = $(this).closest("form").find("[name=currentStep]"),
        curStep = parseInt($stepInput.val());

    
    if (!validateInputs($(this).closest('.bx-soa-section-content').find('.form-box'))) {
        $(this).closest("form").find('.error:first').focus();
        return false;
    }

    if ($(this).closest('.bx-soa-section-content').find('.order-address').length) {
        if ($('.order-address input').val() == "") {
            $('.order-address input').addClass('error')
            return false;
        } else {
            $('.order-address input').removeClass('error')
        }
    }

    if ($(this).closest('.bx-soa-section-content').find('.order-whom').length) {
        const val = $('[name=ORDER_PROP_23]:checked').val();
        if (val === "other") {
            if (!validateInputs($('.order-person'))) {
                return false;
            }
        }
    }

    $stepInput.val(curStep + 1);

    submitForm('N');
});

$(document).on('click', '[data-show-step]',function () {
    $(this).closest("form").find("[name=currentStep]").val($(this).data('show-step'));

    submitForm('N');
});
 
Сверху