Frage

Ich verwende xVal meine Formen in asp.net MVC 1.0

zu validieren

Nicht sicher, warum mein regulärer Ausdruck ist nicht korrekt validiert werden.

  • Es tut nicht Validieren mit einem leeren Wert
  • Es tut nicht Validieren mit dem Wert "1", "12", "123" oder "1234"
  • Es bestätigt mit dem Wert von "12345"
  • Es bestätigt mit dem Wert von "12345"
  • Es bestätigt mit dem Wert von "12345 -"
  • Es bestätigt mit dem Wert von "12345 -1"
  • Es bestätigt mit dem Wert von "12345 -12" ... etc

Für eine Postleitzahl ich eines der beiden Muster erwarten:

12345 oder 12345 -1234

Hier sind die beiden regex Ich habe versucht:

(\d{5})((( -)(\d{4}))?)

(\d{5})|(\d{5} -\d{4})

Hier ist meine MetaDaten Klasse für xVal

[MetadataType(typeof(TIDProfileMetadata))]
public class TIDProfileStep
{
   public class TIDProfileMetadata
   {
       [Required(ErrorMessage = " [Required] ")]
       [RegularExpression(@"(\d{5})|(\d{5} -\d{4})", ErrorMessage = " Invalid Zip ")]
       public string Zip { get; set; }
   }
}

Hier ist meine aspx Seite:

<% Html.BeginForm("Edit", "Profile", FormMethod.Post); %>
<table border="0" cellpadding="0" cellspacing="0">
<tr>
   <td>
      <h6>Zip:</h6>
   </td>
   <td>
      <%= Html.TextBox("Profile.Zip")%>
   </td>
</tr>
<tr>
   <td>
      <input type="submit"/>
   </td> 
</tr>
</table>
<% Html.EndForm(); %>

<% Html.Telerik().ScriptRegistrar()
        .OnDocumentReady(() =>
   { %>
   <%= Html.ClientSideValidation<TIDProfileStep>("Profile").SuppressScriptTags() %>
<% }); %>
War es hilfreich?

Lösung 2

ich nicht zu erwähnen, dass ich eine Maske Plugin für mein Eingabefeld wurde mit. Die Maske Plugin kann hier .

So auf dem Textfeld, wenn ich nur die ersten 5 Ziffern füllen und dann auf dem Tab zum nächsten Feld ist auf die Maske als falsch bestätigen würde Plugin ich verwendet habe. Die Maske Plugin, legt in einem Unterstrich für leere possiblities .... So zum Beispiel:

_____ -____ wäre der Maske, dass es in dem leeren Feld auf Fokus setzen würde. Wenn ich in den ersten 5 Ziffern füllen würde ich:

12345 -____

Dann, wenn ich Tab zum nächsten Feld, das -____ entfernt wird, aber das Eingabefeld Bedürfnisse onblur erneut validiert werden.

Also, was ich tat, war wieder Validate das Eingabefeld auf Blur und jetzt funktioniert es.

$('#Zip').blur(function() {
        $(this).validate();
});

Ich benutze diese regex ^\d{5}( -\d{4})?$

Andere Tipps

Sie verpassen den Start- und End-Anker:

^\d{5}( -\d{4})?$

Ohne diese Sie eine teilweise Übereinstimmung ermöglichen. Die Regex passt die Zeichenfolge 12345 -1 von \d{5}. 12345 -1 und überprüft es

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top