سؤال

أنا أستخدم XVAL للتحقق من صحة النماذج الخاصة بي في ASP.NET MVC 1.0

لست متأكدًا من سبب عدم التحقق من تعبيري المعتاد بشكل صحيح.

  • نعم هو كذلك ليس التحقق من صحة قيمة فارغة
  • نعم هو كذلك ليس التحقق من صحة قيمة "1" أو "12" أو "123" أو "1234"
  • وهو يتحقق من قيمة "12345"
  • وهو يتحقق من قيمة "12345"
  • وهو يتحقق من قيمة "12345 -"
  • إنه يتحقق من قيمة "12345 -1"
  • إنه يتحقق من قيمة "12345 -12" ... إلخ

للحصول على الرمز البريدي ، أتوقع أحد النماذج:

12345 أو 12345 -1234

إليكم اثنين من regex جربتهما:

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

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

ها هو صف البيانات الوصفية الخاصة بي لـ 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; }
   }
}

ها هي صفحتي ASPX:

<% 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() %>
<% }); %>
هل كانت مفيدة؟

المحلول 2

فشلت في ذكر أنني كنت أستخدم مكونًا إضافيًا لقناع لحقل الإدخال الخاص بي. يمكن العثور على المكون الإضافي للقناع هنا.

لذا ، في مربع النص إذا كنت سأملأ فقط أول 5 أرقام ، ثم يتم التحقق من صحة علامة التبويب إلى الحقل التالي على أنها خاطئة بسبب المكون الإضافي للقناع الذي استخدمته. المكون الإضافي للقناع ، يضع في حرف واحد من أجل الإمكانات الفارغة .... على سبيل المثال:

_____ -____ سيكون القناع الذي سيضعه في الحقل الفارغ على التركيز. إذا ملأت أول 5 أرقام ، فسأحصل عليها:

12345 -____

ثم إذا قمت بتبويب الحقل التالي ، -____ تمت إزالته ، ولكن يحتاج حقل الإدخال إلى إعادة صياغة Onblur.

إذن ما فعلته هو إعادة التحقق من حقل الإدخال على Blur والآن يعمل.

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

أنا استخدم هذا regex ^\d{5}( -\d{4})?$

نصائح أخرى

أنت في عداد المفقودين مرساة البداية والنهاية:

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

بدون هذه تسمح بالمطابقة الجزئية. يتطابق Regex مع السلسلة 12345 -1 بواسطة \d{5}: 12345-1, والتحقق من صحة ذلك.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top