jquery.validation: come ignorare i valori predefiniti durante la convalida dei campi obbligatori

Sto usando il plugin di validazione jquery per convalidare un modulo di registrazione.

Ogni campo di immissione del testo contiene istruzioni pre-compilate come valori nella casella di input

es: per una casella di immissione testo id = ‘Nome’, il valore predefinito sarà impostato su ‘Inserisci il tuo nome’. Ho incollato sotto il codice di esempio:

 

Quello che devo sapere è come specificare nella regola di convalida in modo tale che il plugin genera un errore di campo obbligatorio se la casella di input contiene il messaggio predefinito o valori vuoti.

Aiuto molto apprezzato.

Penso che sia meglio:

 jQuery.validator.addMethod("defaultInvalid", function(value, element) { return !(element.value == element.defaultValue); }); 

Ho trovato un modo per aggirare il problema creando una convalida personalizzata usando validator.addMethod, che è davvero facile.

Ho incollato uno snippet del mio blocco di convalida di seguito:

  //1. Define custom validation $(document).ready(function() { jQuery.validator.addMethod("defaultInvalid", function(value, element) { switch (element.value) { case "Your Name": -- this will be the default value in the Name text box if (element.name == "Your Name") return false; } } //2. Include custom validation in the rules for your element $("#aspnetForm").validate( { rules: { Name: "required defaultInvalid" }, messages: { Name: "Please input your name" } }) } 

Ho usato lo stesso per tutti gli elementi che hanno valori predefiniti nel modulo. Funziona alla grande

per quanto sopra ho lavorato solo con le seguenti modifiche:

 jQuery.validator.addMethod("defaultInvalid", function(value, element) { switch (element.value) { case "Your Name": if (element.name == "element_name") return false; break; default: return true; break; } }); 

Se si desidera aggiungere un messaggio di errore personalizzato per giustificare questo.

 jQuery.validator.addMethod("defaultInvalid", function(value, element) { return !(element.value == element.defaultValue); }, 'Custom Error Message for this field'); 

aggiungi questa sezione dopo la regola

onfocusout: function(element) { $(element).valid(); }

e andrà tutto bene.

Penso che sia necessario aggiungere il caso “predefinito” per farlo funzionare correttamente:

 jQuery.validator.addMethod ("defaultInvalid", function (value, element) {
         switch (elemento.valore) {
           caso "$ defaultText":
               if (element.name == "$ defaultText")
                   restituisce falso;
               rompere;
           predefinito:
             ritorna vero;
             rompere;
         }
 });
 $.validator.addMethod("defaultInvalid", function(value, element, param){ var r = $(element).rules(); var req=(this.objectLength(r))?r.required:false; // OR may be var req=r.required; // true, false or undefined. return !req || (value!=param); },$.validator.messages.required); 

 ,rules:{ message: { defaultInvalid:$('#message').attr('placeholder') } } 

Tale funzione prende in considerazione i casi di campi “obbligatori” e “facoltativi”.

Espressione “! Req” sostituisce volutamente “this.optional (elemento)” perché in alcuni casi viene visualizzato il messaggio di errore “discrepanza di dipendenza”.

Ho apportato alcune patch a jquery.validationEngine per consentire di ignorare alcuni campi di input per alcuni moduli complessi. Ho apportato le seguenti modifiche:

  • Aggiungi il supporto per jquery.dropkick seleziona la posizione di convalida di skining
  • Aggiungi campo di selezione non valido per ve_invalid value entry (per poter visualizzare la direttiva senza che sia una selezione valida)
  • Aggiungi hideAllInstant per rimuovere la convalida senza alcun ritardo
  • Aggiungi il supporto per l’elemento jquery.simpleImageCheck se l’input originale è nascosto, usa invece la posizione di simpleImageCheck
  • Aggiungi la class skipValidate per evitare la convalida su alcuni campi senza disabilitarli
  • Risolto un errore in caso di mancata corrispondenza con prompt_err indefinito, la destinazione stava generando un errore
  • aggiungi il supporto clearField per evitare la convalida di jquery.clearField.js
  • aggiungi validateHiddenFields, validazione su campi nascosti e non nascosti

Nel tuo caso puoi usare la modifica per la class skipValidate per eseguire ciò. Puoi trovare lo script con patch qui insieme al filtro inglese (ne è disponibile anche uno):

jquery.validationEngine.js Patched

jquery.validationEngine-it.js Patched

Dovrei presentare queste modifiche in git hub, ma non ho avuto il tempo di farlo adesso.

Jerome Godbout

Panthera Dental