Javascript 引导程序4验证在必填字段中无法正常工作

Javascript 引导程序4验证在必填字段中无法正常工作,javascript,jquery,validation,bootstrap-4,Javascript,Jquery,Validation,Bootstrap 4,我使用Bootstrap4及其验证类做了一个很好的表单。 不幸的是,当我单击submit按钮时,即使我让id为“collaborator name”和“collaborator email”的IPUT清空,提交过程也会定期进行。 输入的边框会定期变为红色或绿色,但提交过程不会停止。 这是我的html表单: <form id="collaborator-send-form" method="POST" class

我使用Bootstrap4及其验证类做了一个很好的表单。 不幸的是,当我单击submit按钮时,即使我让id为“collaborator name”和“collaborator email”的IPUT清空,提交过程也会定期进行。 输入的边框会定期变为红色或绿色,但提交过程不会停止。 这是我的html表单:

                    <form id="collaborator-send-form" method="POST" class="needs-validation" novalidate>
                        <div class="row">
                            
                        <div class="col-lg-6">
                        <div class="card">
                                    <div class="card-body">

                                        <h4 class="header-title">Dati anagrafici</h4>
                                        <hr>
                                            
                                            <div class="form-group mb-1">
                                                <label class="text-danger">Nome *</label>
                                                <div class="input-group">
                                                    <input type="text" class="form-control" name="collaborator-name" id="collaborator-name" required>
                                                </div>
                                            </div>

                                            <div class="form-group mb-1">
                                                <label>Cognome</label>
                                                <div class="input-group">
                                                    <input type="text" class="form-control" name="collaborator-surname" id="collaborator-surname">
                                                </div>
                                            </div>

                                            <div class="form-group mb-0">
                                                <label class="text-danger">Email *</label>
                                                <div class="input-group">
                                                    <div class="input-group-prepend">
                                                        <span class="input-group-text" id="basic-addon1">@</span>
                                                    </div>
                                                    <input type="email" class="form-control" name="collaborator-email" id="collaborator-email" required>
                                                </div>
                                            </div>

                                    </div> <!-- end card-body -->
                                </div> <!-- end card -->

                                <div class="card">
                                    <div class="card-body">

                                        <h4 class="header-title">Residenza</h4>
                                        <hr>
                                            
                                            <div class="form-group mb-1">
                                                <label>Città</label>
                                                <div class="input-group">
                                                    <input type="text" class="form-control" name="collaborator-city" id="collaborator-city">
                                                </div>
                                            </div>

                                            <div class="form-group mb-1">
                                                <label>CAP</label>
                                                <div class="input-group">
                                                    <input type="text" class="form-control" name="collaborator-postal-code" id="collaborator-postal-code">
                                                </div>
                                            </div>

                                            <div class="form-group mb-1">
                                                <label>Provincia</label>
                                                <div class="input-group">
                                                    <input type="text" class="form-control" name="collaborator-province" id="collaborator-province">
                                                </div>
                                            </div>

                                            <div class="form-group mb-0">
                                                <label>Indirizzo</label>
                                                <div class="input-group">
                                                    <input type="text" class="form-control" name="collaborator-address" id="collaborator-address">
                                                </div>
                                            </div>

                                    </div> <!-- end card-body -->
                                    
                                </div> <!-- end card -->

                                

                                <div class="card">
                                    <div class="card-body">

                                        <h4 class="header-title">Riferimenti per il contatto</h4>
                                        <hr>
                                            
                                            <div class="form-group mb-1">
                                                <label>Cellulare</label>
                                                <div class="input-group">
                                                    <input type="text" class="form-control" name="collaborator-mobile-phone" id="collaborator-mobile-phone">
                                                </div>
                                            </div>

                                            <div class="form-group mb-1">
                                                <label>Cellulare 2</label>
                                                <div class="input-group">
                                                    <input type="text" class="form-control" name="collaborator-mobile-phone-two" id="collaborator-mobile-phone-two">
                                                </div>
                                            </div>

                                            <div class="form-group mb-1">
                                                <label>Telefono</label>
                                                <div class="input-group">
                                                    <input type="text" class="form-control" name="collaborator-telephone" id="collaborator-telephone">
                                                </div>
                                            </div>

                                            <div class="form-group mb-1">
                                                <label>Telefono 2</label>
                                                <div class="input-group">
                                                    <input type="text" class="form-control" name="collaborator-telephone-two" id="collaborator-telephone-two">
                                                </div>
                                            </div>

                                            <div class="form-group mb-0">
                                                <label>Skype</label>
                                                <div class="input-group">
                                                    <input type="text" class="form-control" name="collaborator-skype" id="collaborator-skype">
                                                </div>
                                            </div>

                                    </div> <!-- end card-body -->
                                </div> <!-- end card -->

                                <div class="card">
                                    <div class="card-body">

                                        <h4 class="header-title">Dati di nascita</h4>
                                        <hr>
                                            
                                            <div class="form-group mb-1">
                                                <label>Data di nascita</label>
                                                <div class="input-group">
                                                    <input type="date" class="form-control" name="collaborator-born-date" id="collaborator-born-date">
                                                </div>
                                            </div>

                                            <div class="form-group mb-1">
                                                <label>Luogo di nascita</label>
                                                <div class="input-group">
                                                    <input type="text" class="form-control" name="collaborator-born-place" id="collaborator-born-place">
                                                </div>
                                            </div>

                                            <div class="form-group mb-1">
                                                <label>Cap</label>
                                                <div class="input-group">
                                                    <input type="text" class="form-control" name="collaborator-born-postal-code" id="collaborator-born-postal-code">
                                                </div>
                                            </div>

                                            <div class="form-group mb-0">
                                                <label>Provincia</label>
                                                <div class="input-group">
                                                    <input type="text" class="form-control" name="collaborator-born-province" id="collaborator-born-province">
                                                </div>
                                            </div>

                                    </div> <!-- end card-body -->
                                    
                                </div> <!-- end card -->

                                <div class="card">
                                    <div class="card-body">

                                        <h4 class="header-title text-danger">Correzioni segnalate dall'operatore</h4>
                                        <hr>

                                        <div class="form-group mb-0">
                                            <textarea class="form-control" rows="5" name="collaborator-corrections" id="collaborator-corrections"></textarea>
                                            
                                        </div>

                                    </div> <!-- end card-body -->
                                    
                                </div> <!-- end card -->
                            </div> <!-- end col -->

                            <div class="col-lg-6">
                                <div class="card">
                                    <div class="card-body">

                                        <h4 class="header-title">Contratto</h4>
                                        <hr>
                                            
                                            <div class="form-group mb-1">
                                                <label>Tipo contratto *</label>
                                                <div class="input-group">
                                                    <select class="custom-select" name="collaborator-contract-type" id="collaborator-contract-type" required>
                                                        <option></option>
                                                        <option value="1">Ricevuta</option>
                                                        <option value="2">Partita iva</option>
                                                        <option value="3">Estero unione europea</option>
                                                    </select>
                                                </div>
                                            </div>

                                            <div class="form-group mb-1">
                                                <label>Cittadinanza</label>
                                                <div class="input-group">
                                                    <input type="text" class="form-control" name="collaborator-citizenship" id="collaborator-citizenship">
                                                </div>
                                            </div>

                                            <div class="form-group mb-1">
                                                <label>Codice fiscale</label>
                                                <div class="input-group">
                                                    <input type="text" class="form-control" name="collaborator-fiscal-code" id="collaborator-fiscal-code">
                                                </div>
                                            </div>

                                            <div class="form-group mb-0">
                                                <label>Partita iva</label>
                                                <div class="input-group">
                                                    <input type="text" class="form-control" name="collaborator-vat" id="collaborator-vat">
                                                </div>
                                            </div>

                                    </div> <!-- end card-body -->
                                </div> <!-- end card -->
                                <div class="card">
                                    <div class="card-body">

                                        <h4 class="header-title">Pagamenti</h4>
                                        <hr>
                                            
                                        <div class="form-group mb-1">
                                            <label>Pagamento</label>
                                            <div class="input-group">
                                                <select class="custom-select" name="collaborator-payment" id="collaborator-payment">
                                                    <option value="0"></option>
                                                    <option value="1">Bonifico bancario</option>
                                                    <option value="2">Postepay</option>
                                                    <option value="3">Paypal</option>
                                                </select>
                                            </div>
                                        </div>

                                        <div class="form-group mb-1">
                                            <label>Iban</label>
                                            <div class="input-group">
                                                <input type="text" class="form-control" name="collaborator-iban" id="collaborator-iban">
                                            </div>
                                        </div>

                                        <div class="form-group mb-1">
                                            <label>Codice swift</label>
                                            <div class="input-group">
                                                <input type="text" class="form-control" name="collaborator-swift" id="collaborator-swift">
                                            </div>
                                        </div>

                                        <div class="form-group mb-1">
                                            <label>Postepay</label>
                                            <div class="input-group">
                                                <input type="text" class="form-control" name="collaborator-postepay" id="collaborator-postepay">
                                            </div>
                                        </div>

                                        <div class="form-group mb-0">
                                            <label>Paypal</label>
                                            <div class="input-group">
                                                <input type="text" class="form-control" name="collaborator-paypal" id="collaborator-paypal">
                                            </div>
                                        </div>

                                    </div> <!-- end card-body -->
                                </div> <!-- end card -->

                                <div class="card">
                                    <div class="card-body">

                                        <h4 class="header-title">Note</h4>
                                        <hr>
                                            
                                        <div class="form-group mb-0">
                                            <textarea class="form-control" rows="5" name="collaborator-notes" id="collaborator-notes"></textarea>
                                            
                                        </div>

                                    </div> <!-- end card-body -->
                                    
                                </div> <!-- end card -->

                                <div class="card">
                                    <div class="card-body">

                                        <h4 class="header-title">Stato collaboratore</h4>
                                        <hr>
                                            
                                        <div class="form-group mb-1">
                                            <div class="input-group mb-1">
                                                <input type="checkbox" value="1" name="collaborator-state" id="collaborator-state" class="switch-coll-red" data-plugin="switchery">
                                                <label for="collaborator-state" class="text-danger ml-1" > Collaboratore non attivo </label>
                                            </div>
                                            <div class="input-group mb-1">
                                                <input type="checkbox" value="1" name="collaborator-coordinator" id="collaborator-coordinator" class="switch-coll-blue" data-plugin="switchery">
                                                <label for="collaborator-coordinator" class="text-primary ml-1"> Coordinatore </label>
                                            </div>
                                            <div class="input-group mb-1">
                                                <input type="checkbox" value="1" name="collaborator-contact" id="collaborator-contact" class="switch-coll-blue" data-plugin="switchery">
                                                <label for="collaborator-contact" class="text-primary ml-1"> Contatto </label>
                                            </div>
                                        </div>

                                    </div> <!-- end card-body -->
                                    
                                </div> <!-- end card -->

                                <div class="card">
                                    <div class="card-body">

                                        <h4 class="header-title">Valutazione tecnica</h4>
                                        <hr>
                                            
                                        <div class="form-group mb-1">
                                            <div class="input-group">
                                                <select class="custom-select" name="collaborator-ranking" id="collaborator-ranking">
                                                    <option value="0"></option>
                                                    <option value="1">Scartato</option>
                                                    <option value="2">Sufficiente</option>
                                                    <option value="3">Buono</option>
                                                    <option value="3">Ottimo</option>
                                                </select>
                                            </div>
                                        </div>

                                        <div class="form-group mb-0">
                                            <label>Dettaglio sulla valutazione</label>
                                            <textarea class="form-control" rows="5" name="collaborator-ranking-notes" id="collaborator-ranking-notes"></textarea>
                                        </div>

                                    </div> <!-- end card-body -->
                                    
                                </div> <!-- end card -->

                                
                            </div> <!-- end col -->
                            
                            
                        </div>
                        <div class="d-flex justify-content-end mb-3 mr-3">
                            <button type="submit" id="collaborator-button" name="collaborator-button" class="btn btn-primary btn-lg width-xl">Invia</button>
                        </div>
                        
                    </form>
                    <!-- end row -->
正如您所看到的,我不得不添加一个小javascript补丁来停止提交过程。我的目标是避免使用该修补程序,并在必填字段为空时找到避免提交的方法。 表单中有三个必填字段。唯一有效的是id为“collaborator contract type”的select。事实上,当working required字段为空时,提交过程不会继续。另一方面,当id为“collaborator name”和“collaborator email”的输入为空时,验证程序不会停止提交

你能帮忙吗

$("#collaborator-send-form").on('submit', function(e){

    const id = $('#collaborator-id').val();

    let values = {'id': id};

    $.each($('form').serializeArray(), function(i, field) {
        values[field.name] = field.value;
    });

    if ($('#collaborator-coordinator').is(":checked")) {
        values['collaborator-coordinator'] = 1;
    } else {
        values['collaborator-coordinator'] = 0;
    }

    if ($('#collaborator-state').is(":checked")) {
        values['collaborator-state'] = 1;
    } else {
        values['collaborator-state'] = 0;
    }

    if ($('#collaborator-contact').is(":checked")) {
        values['collaborator-contact'] = 1;
    } else {
        values['collaborator-contact'] = 0;
    }

    //my custom patch to stop the submission
    if (values['collaborator-email'] === '' || values['collaborator-name'] === '' || values['collaborator-contract-type'] === '' || values['collaborator-email'].indexOf('@') === -1) {
        return false;
    }

    //then the ajax call