Прерывание submit не работает

122
27 декабря 2020, 18:50

Есть форма:

<?php
        session_start();
        if (isset($_POST["submitdata"])){
                $_SESSION['order_delivery'] = $_POST["order_delivery"];
                $_SESSION['order_fio'] = $_POST["order_fio"];
                $_SESSION['order_email'] = $_POST["order_email"];
                $_SESSION['order_phone'] = $_POST["order_phone"];
                $_SESSION['order_address'] = $_POST["order_address"];
                $_SESSION['order_note'] = $_POST["order_note"];
                header("Location: cart.php?action=completion");
        } else {
                $_SESSION['order_delivery'] = "";
                $_SESSION['order_fio'] = "";
                $_SESSION['order_email'] = "";
                $_SESSION['order_phone'] = "";
                $_SESSION['order_address'] = "";
                $_SESSION['order_note'] = "";
        }
        $chck1="";
        $chck2="";
        $chck3="";
        if ($_SESSION['order_delivery']=="По почте") $chck1 = "checked";
        if ($_SESSION['order_delivery']=="Курьером") $chck2 = "checked";
        if ($_SESSION['order_delivery']=="Самовывоз") $chck3 = "checked";
        echo'
        <h3 class="title-h3">Способы доставки:</h3>
        <form method="post">
        <ul id="info-radio">
        <li>
        <input type="radio" name="order_delivery" class="order_delivery" id="order_delivery1" value="По почте" '.$chck1.' />
        <label class="label_delivery" for="order_delivery1">По почте</label>
        </li>
        <li>
        <input type="radio" name="order_delivery" class="order_delivery" id="order_delivery2" value="Курьером" '.$chck2.' />
        <label class="label_delivery" for="order_delivery2">Курьером</label>
        </li>
        <li>
        <input type="radio" name="order_delivery" class="order_delivery" id="order_delivery3" value="Самовывоз" '.$chck3.' />
        <label class="label_delivery" for="order_delivery3">Самовывоз</label>
        </li>
        </ul>
        <h3 class="title-h3" >Информация для доставки:</h3>
        <ul id="info-order">
        <li><label for="order_fio"><span>*</span>ФИО</label><input type="text" name="order_fio" id="order_fio" value="'.$_SESSION["order_fio"].'" /><span class="order_span_style">Пример: Иванов Иван Иванович</span></li>
        <li><label for="order_email"><span>*</span>E-mail</label><input type="text" name="order_email" id="order_email" value="'.$_SESSION["order_email"].'" /><span class="order_span_style">Пример: ivanov@mail.ru</span></li>
        <li><label for="order_phone"><span>*</span>Телефон</label><input type="text" name="order_phone" id="order_phone" value="'.$_SESSION["order_phone"].'" /><span class="order_span_style" >Пример: 375 (44) 123-12-12</span></li>
        <li><label class="order_label_style" for="order_address"><span>*</span>Адрес<br /> доставки</label><input type="text" name="order_address" id="order_address" value="'.$_SESSION["order_address"].'"><span order_span_style>Пример: г. Гомель, ул. Пушкина, д. 1, кв. 1</span></li>
        <li><label class="order_label_style" for="order_note">Примечание</label><textarea name="order_note" >'.$_SESSION["order_note"].'</textarea><span order_span_style><br />Уточните информацию о заказе. <br/>Например, удобное время для звонка нашего менеджера</span></li>
        </ul>
        <p align="right" ><input type="submit" name="submitdata" id="confirm-button-next" value="Далее" /></p>
        </form>
        ';

По ней идет валидация:

$(document).ready(function() {
    // Шаблон проверки E-mail на правильность
    function isValidEmailAddress(emailAddress){
        var pattern = new RegExp(/^(("[\w-\s]+")|([\w-]+(?:\.[\w-]+)*)|("[\w-\s]+")([\w-]+)*))(@((?:[\w-]+\.)*\w[\w-]{0.66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$)|(@\[?((25[0-5]\.|2[0-4][0-9]\.|1[0-9]{2}\.|[0-9]{1,2}\.))((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\.){2}(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\]?$)/i);
        return pattern.test(emailAddress);
    }
    // Контактные данные
    $('#confirm-button-next').click(function(e){
        var order_fio = $("#order_fio").val();
        var order_email = $("#order_email").val();
        var order_phone = $("#order_phone").val();
        var order_address = $("#order_address").val();
        send_order_delivery = '0';
        send_order_fio = '0';
        send_order_email = '0';
        send_order_phone = '0';
        send_order_address = '0';
        if (!$(".order_delivery").is(":checked")){
            $(".label_delivery").css("color","#e07b7b");
            send_order_delivery = '0';
        } else { $(".label_delivery").css("color","black"); send_order_delivery = '1';}
        // Проверка ФИО
        if (order_fio == "" || order_fio.length > 50){
            $("#order_fio").css("borderColor","#fdb6b6");
            send_order_fio = '0';
        } else { $("#order_fio").css("borderColor","#DBDBDB"); send_order_fio = '1';}
        // Проверка Email
        if (order_email == "" || isValidEmailAddress(order_email) == false){
            $("#order_email").css("borderColor","#fdb6b6");
            send_order_email='0';
        } else { $("#order_email").css("borderColor","#DBDBDB"); send_order_email = '1'}
        // Проверка телефона
        if (order_phone == "" || order_phone.length > 50){
            $("#order_phone").css("borderColor","#fdb6b6");
            send_order_phone = '0';
        } else { $("#order_phone").css("borderColor","#DBDBDB"); send_order_phone = '1';}
        // Проверка адреса
        if (order_address == "" || order_addres.length > 150){
            $("#order_address").css("borderColor","#FDB6B6");
            send_order_address = '0';
        } else { $("#order_address").css("borderColor","#DBDBDB"); send_order_address = '1';}
        // Глобальная проверка
        if ((send_order_delivery == '1') && (send_order_fio == '1') && (send_order_email == '1') && (send_order_phone == "1") && (send_order_address == "1")){
            // Отправляем форму
            return true;
        }
/*
        console.log(send_order_delivery);
        alert('f'+send_order_fio);
        alert('e'+send_order_email);
        alert('p'+send_order_phone);
        alert('a'+send_order_address);
         */
        return false;
        e.preventDefault();  
    });
});

Когда поля пустые, а Radio все идет по плану. Но как пройдешь проверку Radio и введешь например в поле ФИО и АДРЕС что нибудь. То прерывание и глобальная проверка куда то исчезает и странице переходит на след. шаг.

Answer 1
return false;
e.preventDefault();  

Ну а с чего бы ему работать? Строчки местами переставь.

Answer 2

Проблему решил костылями: 1. PHP

    if (isset($_POST["submitdata"])){
        $_SESSION['order_delivery'] = $_POST["order_delivery"];
        $_SESSION['order_fio'] = $_POST["order_fio"];
        $_SESSION['order_email'] = $_POST["order_email"];
        $_SESSION['order_phone'] = $_POST["order_phone"];
        $_SESSION['order_address'] = $_POST["order_address"];
        $_SESSION['order_note'] = $_POST["order_note"];
        if ($_POST["order_delivery"] != "" && $_POST["order_fio"] != "" && $_POST["order_email"] != "" && $_POST["order_phone"] != "" && $_POST["order_address"] != ""){
            header("Location: cart.php?action=completion");
        }
    }
  1. JS
$(document).ready(function() {
    // Шаблон проверки E-mail на правильность
    function isValidEmailAddress(emailAddress){
        var pattern = new RegExp('.+@.+\..+', 'i');//RegExp(/^(("[\w-\s]+")|([\w-]+(?:\.[\w-]+)*)|("[\w-\s]+")([\w-]+)*))(@((?:[\w-]+\.)*\w[\w-]{0.66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$)|(@\[?((25[0-5]\.|2[0-4][0-9]\.|1[0-9]{2}\.|[0-9]{1,2}\.))((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\.){2}(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\]?$)/i);
        return pattern.test(emailAddress);
    }
    // Контактные данные
    $('#confirm-button-next').click(function(e){
        var order_fio = $("#order_fio").val();
        var order_email = $("#order_email").val();
        var order_phone = $("#order_phone").val();
        var order_address = $("#order_address").val();
        send_order_delivery = false;
        send_order_fio = false;
        send_order_email = false;
        send_order_phone = false;
        send_order_address = false;
        if (!$(".order_delivery").is(":checked")){
            $(".label_delivery").css("color","#e07b7b");
            send_order_delivery = false;
        } else { $(".label_delivery").css("color","black"); send_order_delivery = true;}
        // Проверка ФИО
        if (order_fio == "" || order_fio.length > 50){
            $("#order_fio").css("borderColor","#fdb6b6");
            send_order_fio = false;
        } else { $("#order_fio").css("borderColor","#DBDBDB"); send_order_fio = true;}
        // Проверка Email
        if (order_email == "" || isValidEmailAddress(order_email) == false){
            $("#order_email").css("borderColor","#fdb6b6");
            send_order_email=false;
        } else { $("#order_email").css("borderColor","#DBDBDB"); send_order_email = true}
        // Проверка телефона
        if (order_phone == "" || order_phone.length > 50){
            $("#order_phone").css("borderColor","#fdb6b6");
            send_order_phone = false;
        } else { $("#order_phone").css("borderColor","#DBDBDB"); send_order_phone = true;}
        // Проверка адреса
        if (order_address == "" || order_address.length > 150){
            $("#order_address").css("borderColor","#FDB6B6");
            send_order_address = false;
        } else { $("#order_address").css("borderColor","#DBDBDB"); send_order_address = true;}
        // Глобальная проверка
        if (send_order_address == true){
            if (send_order_fio == true){
                if (send_order_email == true){
                    if (send_order_phone == true){
                        if (send_order_delivery == true){
                            return true;
                        }
                    }
                }
            }
        }
        e.preventDefault();
        return false;
    });
});

Правда если ввести правильный Email при выводе в Alert(isValidEmailAddress(order_email)) все равно отправит False, но отправка формы проходит. Я не пока не особо знаком с JS и Магией PHP. Просветите в чем фокус :)

READ ALSO
Что лучше, SplFileObject или fopen и т.д.?

Что лучше, SplFileObject или fopen и т.д.?

Что лучше использовать при работе с файлами, Что лучше, SplFileObject или fopen и тд

126
Получения точного домена через PHP скрипт

Получения точного домена через PHP скрипт

У меня естьphp скрипт на хосте

125
как сравнить пароль зашифрованный c помощью md5 с обычным

как сравнить пароль зашифрованный c помощью md5 с обычным

Я совсем новичек в php, хотел сделать простую страницу регистрация\авторизацияРегистрацию сделал без проблем, а вот с авторизацией вопрос

135
Однотипные маршруты в Laravel

Однотипные маршруты в Laravel

В моем приложении появляется слишком много однотипных маршрутовРазницы между ними практически нет, кроме названия контроллера и самого...

143