Использовал загрузчик для проверки формы, даже если некоторая проверка формы отправляется. Как мне этого избежать - PullRequest
0 голосов
/ 27 сентября 2019

Я использую начальную загрузку 'needs-validation' для проверки формы проверки.Здесь, когда я нажимаю кнопку «Отправить», проверяется поле и форма.Что я хочу, это когда проверка не проходит, форма не должна быть отправлена.Я нашел подтверждение формы (требуется проверка) здесь https://www.w3schools.com/bootstrap4/bootstrap_forms.asp, и я использовал его в своей программе.

Мой сценарий

<div class="row top-space-30">
            <form class="needs-validation" novalidate action="" method="">
                <div class="form-group row">
                    <label class="col-md-4 col-form-label text-md-right" for="studentname">Student Name:</label>
                    <div class="col-md-6">
                        <input id="role" name="studentname" type="text" placeholder="name" class="form-control input-md"
                            required>
                        <div class="valid-feedback">Valid.</div>
                        <div class="invalid-feedback">Please fill out this field.</div>
                    </div>
                </div>

                <div class="form-group row">
                    <label class="col-md-4 col-form-label text-md-right" for="department">Department:</label>
                    <div class="col-md-8">
                        <input class="form-control" type="text" id="department">
                        <input type="hidden" id="TestHidden" value="{{result}}" required>
                    </div>
                </div>

                <div class="col-md-6 offset-md-4 top-space-30">
                    <button type="submit" id="submit">Submit</button>
                </div>
            </form>
        </div>

    </div>
    <script>
        // Disable form submissions if there are invalid fields
        (function () {
            'use strict';
            window.addEventListener('load', function () {
                // Get the forms we want to add validation styles to
                var forms = document.getElementsByClassName('needs-validation');
                // Loop over them and prevent submission
                var validation = Array.prototype.filter.call(forms, function (form) {
                    form.addEventListener('submit', function (event) {
                        if (form.checkValidity() === false) {
                            event.preventDefault();
                            event.stopPropagation();
                        }
                        form.classList.add('was-validated');
                    }, false);
                });
            }, false);
        })();

        $("#submit").click(function (e) {
            var studentName = $("#role").val();
            var departmentsList = $("#department").val().split(',');

            $.ajax({
                type: 'POST',
                url: '/students/add',
                data: {
                    'role': studentName,
                    'departmentslist': JSON.stringify(departmentsList)
                },
                success: function (result) {
                    alert("The department has been added");
                    document.location.href = "/department";
                }
            })
        })
    </script>

1 Ответ

0 голосов
/ 27 сентября 2019

Попробуйте, у меня есть одна функция для проверок formSubmit добавьте свои собственные проверки в эту функцию.

<div class="row top-space-30">
            <form class="needs-validation" name="myForm" action="" method="" onsubmit=" return formSubmit()" >
                <div class="form-group row">
                    <label class="col-md-4 col-form-label text-md-right" for="studentname">Student Name:</label>
                    <div class="col-md-6">
                        <input id="role" name="studentname" type="text" placeholder="name" class="form-control input-md"
                            required>
                        <div class="valid-feedback">Valid.</div>
                        <div class="invalid-feedback">Please fill out this field.</div>
                    </div>
                </div>

                <div class="form-group row">
                    <label class="col-md-4 col-form-label text-md-right" for="department">Department:</label>
                    <div class="col-md-8">
                        <input class="form-control" type="text" name = "departmentname" id="department">
                        <input type="hidden" id="TestHidden" value="{{result}}" required>
                    </div>
                </div>

                <div class="col-md-6 offset-md-4 top-space-30">
                    <button type="Submit" id="submit">Submit</button>
                </div>
            </form>
        </div>

    </div>


    <script
  src="https://code.jquery.com/jquery-3.4.1.min.js"
  integrity="sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo="
  crossorigin="anonymous"></script>

    <script>
        //Disable form submissions if there are invalid fields
        (function () {
            'use strict';
            window.addEventListener('load', function () {
                // Get the forms we want to add validation styles to

                var forms = document.getElementsByClassName('needs-validation');                
                // Loop over them and prevent submission
                var validation = Array.prototype.filter.call(forms, function (form) {

                    form.addEventListener('submit', function (event) {                        
                        if (form.checkValidity() === false) {
                            event.preventDefault();
                            event.stopPropagation();
                        }
                        form.classList.add('was-validated');
                    }, false);
                });
            }, false);
        })();


        function formSubmit(){

             var forms = document.forms["myForm"];
             var studenName = forms.studentname.value;
             var departmentName = forms.departmentname.value;
             // perform validation for studentname and departname  if they are validated then return true, else for wrong input return false

             if(isNaN(studentname) && isNaN(departmentname)){
                return true;
             }    
             else{
                return false;
             }  

        }       


        $("#submit").click(function (e) {
            var studentName = $("#role").val();
            var departmentsList = $("#department").val().split(',');

            $.ajax({
                type: 'POST',
                url: '/students/add',
                data: {
                    'role': studentName,
                    'departmentslist': JSON.stringify(departmentsList)
                },
                success: function (result) {
                    alert("The department has been added");
                    document.location.href = "/department";
                }
            })
        })

    </script>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...