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:
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