Mam kilka danych wejściowych podzielonych na różne pojemniki (panele). Problem polega na tym, że jeśli jeden z tych paneli jest ukryty (style="display:none;"
), wtyczka jQuery.validate nie sprawdza poprawności tych danych wejściowych.jQuery.validate nie działa, jeśli kontener jest ukryty
zrobię test z małego przykład i zdarza się ten sam problem:
widok:
@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>
}
Model:
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; }
}
W "nazwa_użytkownika" właściwość nie jest potwierdzone na klient, gdy jest w dziale ze stylem "display:none;"
Dziękuję Ci
Co zrobisz, jeśli to sprawdzanie się nie powiedzie? W jaki sposób użytkownik skoryguje to, jeśli jest ukryty? Sensowne jest, aby jQuery sprawdzał tylko te pola, które są widoczne na stronie, i które użytkownik może poprawić w razie niepowodzenia reguły. – ShankarSangoli
@ShankarSangoli Jak wyjaśniam w pytaniach, są to pola, które są ukryte w panelach, aby zapobiec bardzo długiemu oglądaniu, jeśli nie zostanie zatwierdzone, pokaż panele z błędem. To tylko prosty przykład z tym samym problemem. –