come verificare se un modulo è valido a livello di codice utilizzando jQuery Validation Plugin


93

Ho una forma con un paio di pulsanti e sto usando jQuery Validation Plugin da http://jquery.bassistance.de/validate/ . Voglio solo sapere se c'è un modo per controllare se il modulo è considerato in uno stato valido dal plug-in di convalida jquery da qualsiasi punto del mio codice javascript.


2
Per coloro che desiderano utilizzare HTML5 e vaniglia JS (senza jQuery): stackoverflow.com/questions/12470622/...
2.540.625

Risposte:


142

Utilizzare .valid()dal plugin jQuery Validation:

$("#form_id").valid();

Controlla se il modulo selezionato è valido o se tutti gli elementi selezionati sono validi. validate () deve essere chiamato sul form prima di controllarlo usando questo metodo.

Dove la forma con id='form_id'è una forma che l'ha già .validate()invocata.


Grazie, stavo già facendo qualcosa del tipo: $ j ("# myform label.error"). Each (function (i, e) {if ($ j (e) .css ('display')! = 'None' ) {existErrors = true;}}); : S Grazie
Jaime Hablutzel

@jaime: Nessun problema, felice di aiutare:)
Andrew Whitaker

In realtà non è necessario eseguire prima .validate () sul form. Puoi semplicemente fare if (form.valid ()) {} e funzionerà, dove 'form' è l'elemento del modulo che stai mirando.
Gareth Daine

11
TypeError: $ ("# myForm"). Valid () non è una funzione.
artgrohe

2
Se stai ricevendo un, TypeError valid() not a functionaggiungi il plugin al tuo file poiché è un plugin non incluso nella libreria jquery, ad es. <script src="https://cdn.jsdelivr.net/jquery.validation/1.16.0/jquery.validate.min.js"></script>
StackEdd

33

Risposta 2015: abbiamo questo fuori dagli schemi sui browser moderni, basta usare l' API CheckValidity HTML5 di jQuery. Ho anche creato un modulo jquery-html5-validity per fare questo:

npm install jquery-html5-validity

Poi:

var $ = require('jquery')
require("jquery-html5-validity")($);

quindi puoi eseguire:

$('.some-class').isValid()

true

1
possiamo chiamarlo su tutta la forma non su ogni elemento?
parisssss

1
Grande! proprio quello che stavo cercando
Fester

Preferisco questo piuttosto che la validfunzione in quanto non chiama la validatefunzione e convalida il tuo modulo.
KevinAdu

@parisssss Ha creato un modulo per farlo su più selezioni come richiesto.
mikemaccana



4

iContribute: non è mai troppo tardi per una risposta giusta.

var form = $("form#myForm");
if($('form#myForm > :input[required]:visible').val() != ""){
  form.submit();
}else{
  console.log("Required field missing.");
}

In questo modo la convalida HTML5 di base per i campi "obbligatori" avviene senza interferire con l'invio standard utilizzando i valori "nome" del modulo.


Nota che :inpute i :visibleselettori sono estensioni jQuery e non fanno parte di CSS. Vedi i dettagli nei documenti
Geradlus_RU

3
Un modulo può anche non essere valido a causa della corrispondenza del modello e non solo perché mancano i campi obbligatori
franco

4

Per un gruppo di input puoi utilizzare una versione migliorata basata sulla risposta di @ mikemaccana

$.fn.isValid = function(){
    var validate = true;
    this.each(function(){
        if(this.checkValidity()==false){
            validate = false;
        }
    });
};

ora puoi usarlo per verificare se il modulo è valido:

if(!$(".form-control").isValid){
    return;
}

Puoi usare la stessa tecnica per ottenere tutti i messaggi di errore:

$.fn.getVelidationMessage = function(){
    var message = "";
    var name = "";
    this.each(function(){
        if(this.checkValidity()==false){
            name = ($( "label[for=" + this.id + "] ").html() || this.placeholder || this.name || this.id);
            message = message + name +":"+ (this.validationMessage || 'Invalid value.')+"\n<br>";
        }
    })
    return message;
}

Ho creato un plugin jQuery per fare il .each () per te.
mikemaccana

1

Per Magento, controlli la convalida del modulo con qualcosa come di seguito.

Puoi provare questo:

require(["jquery"], function ($) {
    $(document).ready(function () {
        $('#my-button-name').click(function () { // The button type should be "button" and not submit
            if ($('#form-name').valid()) {
                alert("Validation pass");
                return false;
            }else{
                alert("Validation failed");
                return false;
            }
        });
    });
});

Spero che questo possa aiutarti!

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.