2012-02-15 12 views
5

मेरे पास कई कंटेनर (पैनल) में अलग-अलग इनपुट अलग-अलग हैं। मेरी समस्या यह है कि यदि इनमें से एक पैनल छिपा हुआ है (style="display:none;"), jQuery.validate प्लगइन, उन इनपुट को मान्य नहीं करता है।jQuery.validate मान्य नहीं है अगर कंटेनर छिपा हुआ है

मैं एक छोटा सा उदाहरण के साथ एक परीक्षण बनाने के लिए और एक ही समस्या होता है:

दृश्य:

@using (Html.BeginForm()) { 
    @Html.ValidationSummary(true) 

    <fieldset> 
     <legend>Fields</legend> 

     <div class="UserName" style="display:none;"> 
      <div class="editor-label"> @Html.LabelFor(model => model.UserName) </div> 
      <div class="editor-field"> 
       @Html.TextBoxFor(model => model.UserName) @Html.ValidationMessageFor(model => model.UserName) 
      </div> 
     </div> 

     <div class="editor-label"> @Html.LabelFor(model => model.FirstName) </div> 
     <div class="editor-field"> 
      @Html.TextBoxFor(model => model.FirstName) @Html.ValidationMessageFor(model => model.FirstName) 
     </div> 

     <div class="editor-label"> 
      @Html.LabelFor(model => model.LastName) 
     </div> 
     <div class="editor-field"> 
      @Html.TextBoxFor(model => model.LastName) @Html.ValidationMessageFor(model => model.LastName) 
     </div> 

     <div class="editor-label"> @Html.LabelFor(model => model.City) </div> 
     <div class="editor-field"> 
      @Html.TextBoxFor(model => model.City) @Html.ValidationMessageFor(model => model.City) 
     </div> 

     <p> 
      <input type="submit" value="Create" /> 
     </p> 
    </fieldset> 

} 

मॉडल:

public class UserModel { 

    [Required] 
    [StringLength(6, MinimumLength = 3)] 
    [Display(Name = "User Name")] 
    [RegularExpression(@"(\S)+", ErrorMessage = "White space is not allowed")] 
    [ScaffoldColumn(false)] 
    public string UserName { get; set; } 

    [Required] 
    [StringLength(8, MinimumLength = 3)] 
    [Display(Name = "First Name")] 
    public string FirstName { get; set; } 
    [Required] 
    [StringLength(9, MinimumLength = 2)] 
    [Display(Name = "Last Name")] 
    public string LastName { get; set; } 
    [Required()] 
    public string City { get; set; } 

} 

"उपयोगकर्ता नाम" संपत्ति पर मान्य नहीं है क्लाइंट "display:none;"

धन्यवाद के साथ div के अंदर है आप

+0

यदि सत्यापन विफल हो जाता है तो आप क्या करेंगे? अगर यह छुपा हुआ है तो उपयोगकर्ता इसे कैसे सही करेगा? यह jQuery के लिए केवल उन फ़ील्ड को सत्यापित करने के लिए समझ में आता है जो पृष्ठ पर दिखाई दे रहे हैं और उपयोगकर्ता नियम विफल होने पर सही कर सकते हैं। – ShankarSangoli

+0

@ शंकरसंगोली जैसा कि मैंने पूछताछ में बताया है, वे क्षेत्र हैं जो दृश्यों को बहुत लंबे समय से रोकने के लिए पैनलों में छिपे हुए हैं, क्या यह मान्य नहीं होना चाहिए, पैनलों को त्रुटि के साथ दिखाएं। यह एक ही समस्या के साथ बस एक साधारण उदाहरण है। –

उत्तर

17

अपने प्लगइन आप

$('#fromID').validate({ 
      ignore: "",    
     }); 

की तरह विकल्प को अनदेखा स्थापना द्वारा छिपा आदानों क्षेत्रों मान्य कर सकते हैं, लेकिन जब से तुम विनीत सत्यापन का उपयोग कर रहे jQuery सत्यापित करें साथ, छिपे हुए इनपुट क्षेत्रों को मान्य करने के लिए नहीं करने के लिए वांछित व्यवहार mvc3 jQuery सत्यापित करें आप प्लगइन का उपयोग करता है प्लगइन अपने आप को आप अपने प्रारंभ की तरह

var validatorSettings = $.data($('form')[0], 'validator').settings; 
validatorSettings.ignore = ""; 

Reference

बाद अपनी सेटिंग को परिवर्तित करना होगा प्रारंभ नहीं कर सकते में

This is also a helpful blogpost

+1

यह अन्य सत्यापन समस्याओं के साथ मेरे लिए बहुत उपयोगी था। धन्यवाद। (मूल प्रश्न से असंबंधित) – Ciel

संबंधित मुद्दे