2010-04-28 12 views
17

Ich benutze das jquery-Validierungs-Plugin, um ein Registrierungsformular zu validieren.jquery.validation - Wie ignoriere ich Standardwerte bei der Validierung von Pflichtfeldern?

Jedes Texteingabefeld hat Anweisungen als Werte in dem Eingabefeld

ex vorgefüllte: für ein Text-Eingabefeld id = ‚Namen‘, wird der Standardwert eingestellt wird ‚Ihren Namen Enter‘. Ich habe unten Beispielcode eingefügt:

<input type="text" id="Name" value="Enter Your Name" onfocus="if(this.value == 'Your Name'){this.value = '';}" type="text" class="required" onblur="if(this.value == ''){this.value='Your Name';}" size="25" /> 

Was ich wissen muss, ist, wie in der Gültigkeitsregel zu spezifizieren, so dass das Plugin ein Pflichtfeld Fehler auslöst, wenn das Eingabefeld enthält entweder die Standardmeldung oder leere Werte.

Hilfe sehr geschätzt.

Antwort

5

Ich habe einen Weg gefunden, um das Problem zu umgehen, indem ich mit validator.addMethod eine benutzerdefinierte Validierung erstelle, die wirklich einfach ist.

Ich habe einen Ausschnitt meiner Validierungsblock unten eingefügt:

//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" 
     } 
    }) 
    } 

ich verwendet habe, das gleiche für alle Elemente, die Standardwerte in Form haben. Das funktioniert großartig.

2

für mich die oben arbeitete nur mit den folgenden Änderungen:

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; 
    } 
}); 
0

Ich glaube, Sie brauchen den „default“ Fall hinzuzufügen, diese richtig zum Laufen zu bringen:

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

Ich denke, das ist besser:

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

Oder einfach zurückgeben! (Element.value == element.defaultvalue); – AntonioCS

+0

Ersetzen Sie für die Neuankömmlinge dieses Threads die obige Antwort entsprechend in den Zeilen 4-12. Tolle Arbeit Jungs. – deflime

0
$.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') 
      } 
     } 

Eine solche Funktion berücksichtigt Fälle von "mandatory" & "optional" Felder aus.

Ausdruck "! Req" ersetzt absichtlich "This.optional (Element)", weil ich in einigen Fällen die Fehlermeldung "Abhängigkeitskonflikt" bekomme.

2

Wenn Sie eine benutzerdefinierte Fehlermeldung hinzufügen möchten, justieren Sie dies.

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

Danke ... genau das, was ich gesucht habe! – brainondev

0

Ich habe einige Patch jquery.validationEngine für einige komplexe Form zu ignorieren einige Eingabefeld zu ermöglichen. Ich habe die folgenden Änderungen:

  • hinzufügen Unterstützung für jquery.dropkick wählen Kürschnerei Validierungs Position
  • hinzufügen Auswahlfeld ungültig für ve_invalid Werteingabe (können Richtlinie anzuzeigen, ohne es eine gültige Auswahl ist)
  • Fügen Sie hideAllInstant hinzu, um die Überprüfung ohne Verzögerung zu entfernen
  • Fügen Sie Unterstützung für jquery hinzu.simpleImageCheck Element ursprünglichen Eingang versteckt ist, verwenden Standort von simpleImageCheck statt
  • hinzufügen skipValidate Klasse Validierung auf einigen Feldern zu vermeiden, ohne sie
  • Fix Fehler zu deaktivieren, wenn keine Übereinstimmung mit prompt_err nicht definiert, das Ziel wurde ein Fehler generiert
  • Clear hinzufügen Unterstützung zu vermeiden jquery.clearField.js
  • hinzufügen validateHiddenFields, Validierung auf versteckte und nicht verborgenen Feld

In Ihrem Fall Validieren Sie die Änderung für die skipValidate Klasse verwenden, kann dies auszuführen. Sie können die gepatchte Skript finden Sie hier zusammen mit dem Englisch-Filter (fr man auch verfügbar ist):

jquery.validationEngine.js Patched

jquery.validationEngine-en.js Patched

ich soll diese Änderung in git Nabe einreichen, aber er bekam keine Zeit zu Tu das jetzt gerade.

Jerome Godbout

Panthera Dental

1

gerade dieser Abschnitt nach Regel

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

hinzufügen und es wird alles in Ordnung sein.

Verwandte Themen