Проверка формы с помощью Jquery с операторами if - PullRequest
0 голосов
/ 25 апреля 2020

Я собираюсь выпустить свой личный сайт, но застрял с проверкой контактной формы. Я хочу, чтобы посетители правильно вводили каждое поле. Пока я делаю это, я могу go для обеих сторон (либо javascript, либо php проверка). Но страница остается c HTML, только запросы на почту. php для отправки. (С использованием PHPMAILER).

В основном я хочу, чтобы пользователи получали уведомления в каждом поле, а затем, если они вводят все правильно, я хочу, чтобы они отправили форму и отобразили сообщение об успехе, не перенаправляя их. Вот мой код, и я ценю вашу помощь.

                        <form name="form1" id="contact-form" method="post" role="form">
                            <div class="col-md-8 col-pb-sm animate-box">
                                <div class="row">
                                    <div class="col-md-6">
                                        <div class="form-group">
                                            <input type="text" name="name" required="required" class="form-control" placeholder="Your Name">
                                        </div>
                                    </div>
                                    <div class="col-md-6">
                                        <div class="form-group">
                                            <input type="email" required="required" pattern="^([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$" name="email" class="form-control" placeholder="Email">
                                        </div>
                                    </div>
                                    <div class="col-md-12">
                                        <div class="form-group">
                                            <textarea class="form-control" required="required" name="message" id="" cols="30" rows="7" placeholder="Message"></textarea>
                                        </div>
                                    </div>
                                    <div class="col-md-12">
                                        <div class="col-md-3 form-group">
                                            <input type="submit" name="submit" value="Send Message" class="btn btn-primary" formaction="mail.php" onsubmit="return ValidateLoginForm();">
                                        </div>
                                        <div class="col-md-7 col-md-offset-1 form-align" id="form_response"></div>
                                    </div>
                                </div>
                            </div>
                        </form>
                        </div>
                    </div>
                </div>
            </div>
        </div>
        <footer>
            <div id="footer">
                <div class="container">
                    <div class="row">
                        <div class="col-md-12 text-center">
                            <p>
                                Copyright © 2020 Umut Pirinci.
                            </p>
                        </div>
                    </div>
                </div>
            </div>
        </footer>



    <!-- jQuery -->
    <script src="js/jquery.min.js"></script>
    <!-- jQuery Easing -->
    <script src="js/jquery.easing.1.3.js"></script>
    <!-- animateAnything -->
    <script src="https://s3-us-west-2.amazonaws.com/s.cdpn.io/409445/animateAnything.js"></script>
    <!-- Bootstrap -->
    <script src="js/bootstrap.min.js"></script>
    <!-- Waypoints -->
    <script src="js/jquery.waypoints.min.js"></script>
    <!-- Owl Carousel -->
    <script src="js/owl.carousel.min.js"></script>
    <!-- Magnific Popup -->
    <script src="js/jquery.magnific-popup.min.js"></script>
    <script src="js/magnific-popup-options.js"></script>

    <!-- Main JS (Do not remove) -->
    <script src="js/main.js"></script>
    <script>
    $(function() {
            $('a[href*=\\#]:not([href=\\#])').on('click', function() {
                    var target = $(this.hash);
                    target = target.length ? target : $('[name=' + this.hash.substr(1) +']');
                    if (target.length) {
                            $('html,body').animate({
                                    scrollTop: target.offset().top
                            }, 1000);
                            return false;
                    }
            });
    });
    </script>
    <script>
        $(function () {
                $('#contact-form').on('submit', function (e) {
                    if (!e.isDefaultPrevented()) {
                        var url = "mail.php";

                        $.ajax({
                            type: "POST",
                            url: url,
                            data: $(this).serialize(),
                            success: function (data) {
                                var messageAlert = 'alert-' + data.type;
                                var messageText = data.message;
                                var alertBox = '<div class="alert ' + messageAlert + ' alert-dismissable"><button type="button" class="close" data-dismiss="alert" aria-hidden="true">&times;</button>' + messageText + '</div>';
                                if (messageAlert && messageText) {
                                    $('#contact-form').find('.messages').html(alertBox);
                                    $('#contact-form')[0].reset();
                                }
                            }
                        });
                        return false;

                    }
                })
            });
    </script>
    <script>
    function ValidateLoginForm() {
        var name = document.form1.name;
        var message = document.form1.message;
        var email = document.form1.email;

        if (name.value == "") {
            alert("Your name wasn't recognised.");
            name.focus();
            return false;
        }

        if (message.value == "") {
            alert("Please enter your message.");
            message.focus();
            return false;
        }
        if (email.value == "") {
            alert("Please enter your email address.");
            email.focus();
            return false;
        }
        else {
            return true;
        }
    }
    </script>
    <script>
            function form_sub() {
                $('#form_response').html('Your form has been successfully sent!').fadeIn(1500).delay(5000).fadeOut(1500);
            }
    </script>

    </body>
</html>

1 Ответ

1 голос
/ 25 апреля 2020

Есть несколько вещей, которые вам нужно сделать:

1 - ввод с типом submit, вам нужно удалить атрибут onsubmit, так как этот атрибут должен быть добавлен только в тег FORM. 2 - попробуйте объединить функции отправки только с одной.

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>

<form name="form1" id="contact-form" method="post" role="form">
    <div class="col-md-8 col-pb-sm animate-box">
        <div class="row">
            <div class="col-md-6">
                <div class="form-group">
                    <input type="text" name="name" required="required" class="form-control" placeholder="Your Name">
                </div>
            </div>
            <div class="col-md-6">
                <div class="form-group">
                    <input type="email" required="required" pattern="^([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$" name="email" class="form-control" placeholder="Email">
                </div>
            </div>
            <div class="col-md-12">
                <div class="form-group">
                    <textarea class="form-control" required="required" name="message" id="" cols="30" rows="7" placeholder="Message"></textarea>
                </div>
            </div>
            <div class="col-md-12">
                <div class="col-md-3 form-group">
                    <input type="submit" name="submit" value="Send Message" class="btn btn-primary" formaction="mail.php">
                </div>
                <div class="col-md-7 col-md-offset-1 form-align" id="form_response"></div>
            </div>
        </div>
    </div>
</form>

<script>
    $('#contact-form').on('submit', function (e) {
        ValidateLoginForm();
        e.preventDefault();
        return false;
    })
    function ValidateLoginForm() {
        var name = document.form1.name;
        var message = document.form1.message;
        var email = document.form1.email;

        if (name.value == "") {
            alert("Your name wasn't recognised.");
            name.focus();
            return false;
        }
        if (message.value == "") {
            alert("Please enter your message.");
            message.focus();
            return false;
        }
        if (email.value == "") {
            alert("Please enter your email address.");
            email.focus();
            return false;
        } else {
            var url = "mail.php";
            $.ajax({
                type: "POST",
                url: url,
                data: $(this).serialize(),
                success: function (data) {
                    var messageAlert = 'alert-' + data.type;
                    var messageText = data.message;
                    var alertBox = '<div class="alert ' + messageAlert + ' alert-dismissable"><button type="button" class="close" data-dismiss="alert" aria-hidden="true">&times;</button>' + messageText + '</div>';
                    if (messageAlert && messageText) {
                        $('#contact-form').find('.messages').html(alertBox);
                        $('#contact-form')[0].reset();
                    }
                }
            });
        }
    }
</script>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...